fbmem: cdev lock_kernel() pushdown
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
parent
5794e1b14b
commit
fc7f687a68
|
@ -1326,20 +1326,27 @@ fb_open(struct inode *inode, struct file *file)
|
|||
|
||||
if (fbidx >= FB_MAX)
|
||||
return -ENODEV;
|
||||
lock_kernel();
|
||||
#ifdef CONFIG_KMOD
|
||||
if (!(info = registered_fb[fbidx]))
|
||||
try_to_load(fbidx);
|
||||
#endif /* CONFIG_KMOD */
|
||||
if (!(info = registered_fb[fbidx]))
|
||||
return -ENODEV;
|
||||
if (!try_module_get(info->fbops->owner))
|
||||
return -ENODEV;
|
||||
if (!(info = registered_fb[fbidx])) {
|
||||
res = -ENODEV;
|
||||
goto out;
|
||||
}
|
||||
if (!try_module_get(info->fbops->owner)) {
|
||||
res = -ENODEV;
|
||||
goto out;
|
||||
}
|
||||
file->private_data = info;
|
||||
if (info->fbops->fb_open) {
|
||||
res = info->fbops->fb_open(info,1);
|
||||
if (res)
|
||||
module_put(info->fbops->owner);
|
||||
}
|
||||
out:
|
||||
unlock_kernel();
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue