Protect uio driver from crashing if its owner is hot unplugged while there are open fds.
Signed-off-by: Brian Russell <bruss...@brocade.com> --- drivers/uio/uio.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c index 6276f13..70ce015 100644 --- a/drivers/uio/uio.c +++ b/drivers/uio/uio.c @@ -434,9 +434,11 @@ static int uio_open(struct inode *inode, struct file *filep) goto out; } + get_device(idev); + if (!try_module_get(idev->owner)) { ret = -ENODEV; - goto out; + goto err_module_get; } listener = kmalloc(sizeof(*listener), GFP_KERNEL); @@ -462,6 +464,9 @@ err_infoopen: err_alloc_listener: module_put(idev->owner); +err_module_get: + put_device(idev); + out: return ret; } @@ -485,6 +490,7 @@ static int uio_release(struct inode *inode, struct file *filep) module_put(idev->owner); kfree(listener); + put_device(idev); return ret; } -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/