Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.
Hi Alexey, Thanks a lot! I have put it into our tree. http://git.drbd.org/gitweb.cgi?p=drbd-8.4.git I intend to get it into the 3.10 merge window. Best, Phil > If single_open() fails in drbd_proc_open(), module refcount is left > incremented. The patch adds module_put() on the error path. > > Found by Linux Driver Verification project (linuxtesting.org). > > Signed-off-by: Alexey Khoroshilov <khoroshilov at ispras.ru> > --- > drivers/block/drbd/drbd_proc.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/block/drbd/drbd_proc.c b/drivers/block/drbd/drbd_proc.c > index 56672a6..30fe0a5 100644 > --- a/drivers/block/drbd/drbd_proc.c > +++ b/drivers/block/drbd/drbd_proc.c > @@ -313,8 +313,14 @@ static int drbd_seq_show(struct seq_file *seq, void *v) > > static int drbd_proc_open(struct inode *inode, struct file *file) > { > - if (try_module_get(THIS_MODULE)) > - return single_open(file, drbd_seq_show, PDE(inode)->data); > + int err; > + > + if (try_module_get(THIS_MODULE)) { > + err = single_open(file, drbd_seq_show, PDE(inode)->data); > + if (err) > + module_put(THIS_MODULE); > + return err; > + } > return -ENODEV; > }