Skip to content

Commit

Permalink
drivers/rtc/rtc-proc.c: add module_put on error path in rtc_proc_open()
Browse files Browse the repository at this point in the history
In file drivers/rtc/rtc-proc.c seq_open() can return -ENOMEM.

 86        if (!try_module_get(THIS_MODULE))
 87                return -ENODEV;
 88
 89        return single_open(file, rtc_proc_show, rtc);

In this case before exiting (line 89) from rtc_proc_open the
module_put(THIS_MODULE) must be called.

Found by Linux Device Drivers Verification Project

Signed-off-by: Alexander Strakh <strakh@ispras.ru>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Alexander Strakh authored and Linus Torvalds committed Feb 12, 2011
1 parent 6e20fb1 commit 24a6f5b
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion drivers/rtc/rtc-proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,16 @@ static int rtc_proc_show(struct seq_file *seq, void *offset)

static int rtc_proc_open(struct inode *inode, struct file *file)
{
int ret;
struct rtc_device *rtc = PDE(inode)->data;

if (!try_module_get(THIS_MODULE))
return -ENODEV;

return single_open(file, rtc_proc_show, rtc);
ret = single_open(file, rtc_proc_show, rtc);
if (ret)
module_put(THIS_MODULE);
return ret;
}

static int rtc_proc_release(struct inode *inode, struct file *file)
Expand Down

0 comments on commit 24a6f5b

Please sign in to comment.