Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753176AbcLFKIz (ORCPT ); Tue, 6 Dec 2016 05:08:55 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:42326 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752018AbcLFKIu (ORCPT ); Tue, 6 Dec 2016 05:08:50 -0500 Date: Tue, 6 Dec 2016 11:08:57 +0100 From: Greg KH To: kys@microsoft.com Cc: linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, vkuznets@redhat.com, jasowang@redhat.com, leann.ogasawara@canonical.com Subject: Re: [PATCH V2 04/15] Drivers: hv: vmbus: Enhance the rescind callback functionality Message-ID: <20161206100857.GB32261@kroah.com> References: <1480797239-10085-1-git-send-email-kys@exchange.microsoft.com> <1480797282-10126-1-git-send-email-kys@exchange.microsoft.com> <1480797282-10126-4-git-send-email-kys@exchange.microsoft.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1480797282-10126-4-git-send-email-kys@exchange.microsoft.com> User-Agent: Mutt/1.7.2 (2016-11-26) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2405 Lines: 65 On Sat, Dec 03, 2016 at 12:34:31PM -0800, kys@exchange.microsoft.com wrote: > From: K. Y. Srinivasan > > Enhance the rescind callback functionality by permitting the passing of an opaque > pointer. This functionality will be used by vmbus device drivers to implement > rescind related cleanup more efficiently. Eeek, why a void *? Please make this a _real_ pointer. > > Signed-off-by: K. Y. Srinivasan > --- > drivers/hv/channel_mgmt.c | 11 +++++++---- > include/linux/hyperv.h | 7 ++++--- > 2 files changed, 11 insertions(+), 7 deletions(-) > > diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c > index f9c5827..d83c1ac 100644 > --- a/drivers/hv/channel_mgmt.c > +++ b/drivers/hv/channel_mgmt.c > @@ -825,8 +825,10 @@ static void vmbus_onoffer_rescind(struct vmbus_channel_message_header *hdr) > > if (channel->device_obj) { > if (channel->chn_rescind_callback) { > - channel->chn_rescind_callback(channel); > - goto out; > + channel->chn_rescind_callback(channel, > + channel->rescind_arg); > + if (is_hvsock_channel(channel)) > + goto out; > } > /* > * We will have to unregister this device from the > @@ -1215,9 +1217,10 @@ bool vmbus_are_subchannels_present(struct vmbus_channel *primary) > } > EXPORT_SYMBOL_GPL(vmbus_are_subchannels_present); > > -void vmbus_set_chn_rescind_callback(struct vmbus_channel *channel, > - void (*chn_rescind_cb)(struct vmbus_channel *)) > +void vmbus_set_chn_rescind_callback(struct vmbus_channel *channel, void *arg, > + void (*chn_rescind_cb)(struct vmbus_channel *, void *)) > { > channel->chn_rescind_callback = chn_rescind_cb; > + channel->rescind_arg = arg; > } > EXPORT_SYMBOL_GPL(vmbus_set_chn_rescind_callback); > diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h > index 35053f9..a9a0ce4 100644 > --- a/include/linux/hyperv.h > +++ b/include/linux/hyperv.h > @@ -800,7 +800,8 @@ struct vmbus_channel { > * Channel rescind callback. Some channels (the hvsock ones), need to > * register a callback which is invoked in vmbus_onoffer_rescind(). > */ > - void (*chn_rescind_callback)(struct vmbus_channel *channel); > + void (*chn_rescind_callback)(struct vmbus_channel *channel, void *arg); > + void *rescind_arg; Why does the channel have rescind_arg here? Where do you use this functionality? thanks, greg k-h