Skip to content
This repository has been archived by the owner on Oct 31, 2024. It is now read-only.

Commit

Permalink
debugfs: Return error during {full/open}_proxy_open() on rmmod
Browse files Browse the repository at this point in the history
If a kernel module gets unloaded then it printed report about a leak before
commit 275678e ("debugfs: Check module state before warning in
{full/open}_proxy_open()"). An additional check was added in this commit to
avoid this printing. But it was forgotten that the function must return an
error in this case because it was not actually opened.

As result, the systems started to crash or to hang when a module was
unloaded while something was trying to open a file.

Fixes: 275678e ("debugfs: Check module state before warning in {full/open}_proxy_open()")
Cc: Taehee Yoo <ap420073@gmail.com>
Reported-by: Mário Lopes <ml@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Link: https://lore.kernel.org/r/20210802162444.7848-1-sven@narfation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
ecsv authored and gregkh committed Aug 5, 2021
1 parent fac58b4 commit 112cedc
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions fs/debugfs/file.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,10 @@ static int open_proxy_open(struct inode *inode, struct file *filp)
if (!fops_get(real_fops)) {
#ifdef CONFIG_MODULES
if (real_fops->owner &&
real_fops->owner->state == MODULE_STATE_GOING)
real_fops->owner->state == MODULE_STATE_GOING) {
r = -ENXIO;
goto out;
}
#endif

/* Huh? Module did not clean up after itself at exit? */
Expand Down Expand Up @@ -314,8 +316,10 @@ static int full_proxy_open(struct inode *inode, struct file *filp)
if (!fops_get(real_fops)) {
#ifdef CONFIG_MODULES
if (real_fops->owner &&
real_fops->owner->state == MODULE_STATE_GOING)
real_fops->owner->state == MODULE_STATE_GOING) {
r = -ENXIO;
goto out;
}
#endif

/* Huh? Module did not cleanup after itself at exit? */
Expand Down

0 comments on commit 112cedc

Please sign in to comment.