Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751500AbcJJJSV (ORCPT ); Mon, 10 Oct 2016 05:18:21 -0400 Received: from mx2.suse.de ([195.135.220.15]:53527 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751317AbcJJJSU (ORCPT ); Mon, 10 Oct 2016 05:18:20 -0400 Subject: Re: [PATCH] xenbus: advertize control feature flags To: Paul Durrant , linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org References: <1476085386-4544-1-git-send-email-paul.durrant@citrix.com> Cc: Boris Ostrovsky , David Vrabel From: Juergen Gross Message-ID: Date: Mon, 10 Oct 2016 11:17:24 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 MIME-Version: 1.0 In-Reply-To: <1476085386-4544-1-git-send-email-paul.durrant@citrix.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1438 Lines: 47 On 10/10/16 09:43, Paul Durrant wrote: > The Xen docs specify several flags which a guest can set to advertize > which values of the xenstore control/shutdown key it will recognize. > This patch adds code to write all the relevant feature-flag keys. > > Signed-off-by: Paul Durrant > Cc: Boris Ostrovsky > Cc: David Vrabel > Cc: Juergen Gross > --- > drivers/xen/manage.c | 45 +++++++++++++++++++++++++++++++++++---------- > 1 file changed, 35 insertions(+), 10 deletions(-) > > diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c > index e12bd36..86cf57c 100644 > --- a/drivers/xen/manage.c > +++ b/drivers/xen/manage.c > @@ -309,8 +311,31 @@ static struct notifier_block xen_reboot_nb = { > > static int setup_shutdown_watcher(void) > { > + static struct shutdown_handler *handler; > int err; > > + for (handler = &shutdown_handlers[0]; handler->command; handler++) { > + const char *fmt = "feature-%s"; > + int size; > + char *node; > + > + if (!handler->flag) > + continue; > + > + size = snprintf(NULL, 0, fmt, handler->command); > + > + node = kmalloc(++size, GFP_KERNEL); > + if (!node) { > + pr_err("Failed to allocate feature flag\n"); > + return -ENOMEM; > + } > + > + (void) snprintf(node, size, fmt, handler->command); One other nit: please us kasprintf() instead of open coding it. Juergen