> -----Original Message----- > From: devel [mailto:driverdev-devel-boun...@linuxdriverproject.org] On > Behalf Of Dexuan Cui > Sent: Tuesday, November 11, 2014 9:03 PM > To: gre...@linuxfoundation.org; linux-ker...@vger.kernel.org; driverdev- > de...@linuxdriverproject.org; o...@aepfle.de; a...@canonical.com; > jasow...@redhat.com > Cc: Haiyang Zhang > Subject: [PATCH] hv: hv_fcopy: drop the obsolete message on transfer > failure > > In the case the user-space daemon crashes, hangs or is killed, we need to > down the semaphore, otherwise, after the daemon starts next time, the > obsolete data in fcopy_transaction.message or fcopy_transaction.fcopy_msg > will be used immediately. > > Cc: K. Y. Srinivasan <k...@microsoft.com> > Signed-off-by: Dexuan Cui <de...@microsoft.com> > --- > drivers/hv/hv_fcopy.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/hv/hv_fcopy.c b/drivers/hv/hv_fcopy.c index > 23b2ce2..177122a 100644 > --- a/drivers/hv/hv_fcopy.c > +++ b/drivers/hv/hv_fcopy.c > @@ -86,6 +86,15 @@ static void fcopy_work_func(struct work_struct > *dummy) > * process the pending transaction. > */ > fcopy_respond_to_host(HV_E_FAIL); > + > + /* In the case the user-space daemon crashes, hangs or is killed, we > + * need to down the semaphore, otherwise, after the daemon starts > next > + * time, the obsolete data in fcopy_transaction.message or > + * fcopy_transaction.fcopy_msg will be used immediately. > + */ > + if (down_trylock(&fcopy_transaction.read_sema)) > + pr_debug("FCP: failed to acquire the semaphore\n"); > + > }
When the daemon is killed, we currently reset the state in the release function. Why can't we cleanup the semaphore state (initialize) here as well. K. Y > > static int fcopy_handle_handshake(u32 version) > -- > 1.9.1 > > _______________________________________________ > devel mailing list > de...@linuxdriverproject.org > http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel _______________________________________________ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel