Drivers: hv: fcopy: set .owner reference for file operations

Get an additional reference otherwise a crash is observed when hv_utils module is being unloaded while
fcopy daemon is still running. .owner gives us an additional reference when
someone holds a descriptor for the device.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Tested-by: Alex Ng <alexng@microsoft.com>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Vitaly Kuznetsov 2015-04-11 18:07:50 -07:00 committed by Greg Kroah-Hartman
parent 4c93ccccf4
commit 3f0dccf86c

View File

@ -360,12 +360,9 @@ static int fcopy_open(struct inode *inode, struct file *f)
} }
/* XXX: there are still some tricky corner cases, e.g., /* XXX: there are still some tricky corner cases, e.g.,
* 1) In a SMP guest, when fcopy_release() runs between * In an SMP guest, when fcopy_release() runs between
* schedule_delayed_work() and fcopy_send_data(), there is * schedule_delayed_work() and fcopy_send_data(), there is
* still a chance an obsolete message will be queued. * still a chance an obsolete message will be queued.
*
* 2) When the fcopy daemon is running, if we unload the driver,
* we'll notice a kernel oops when we kill the daemon later.
*/ */
static int fcopy_release(struct inode *inode, struct file *f) static int fcopy_release(struct inode *inode, struct file *f)
{ {
@ -385,6 +382,7 @@ static int fcopy_release(struct inode *inode, struct file *f)
static const struct file_operations fcopy_fops = { static const struct file_operations fcopy_fops = {
.owner = THIS_MODULE,
.read = fcopy_read, .read = fcopy_read,
.write = fcopy_write, .write = fcopy_write,
.release = fcopy_release, .release = fcopy_release,