UBIFS: do not forget to cancel timers
This is a bug-fix: when we unmount, and we are currently in R/O mode because of an error - we do not sync write-buffers, which means we also do not cancel write-buffer timers we may possibly have armed. This patch fixes the issue. The issue can easily be reproduced by enabling UBIFS failure debug mode (echo 4 > /sys/module/ubifs/parameters/debug_tsts) and unmounting as soon as a failure happen. At some point the system oopses because we have an armed hrtimer but UBIFS is unmounted already. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
This commit is contained in:
parent
39037559e6
commit
3601ba2735
|
@ -1772,6 +1772,10 @@ static void ubifs_put_super(struct super_block *sb)
|
|||
*/
|
||||
ubifs_err("failed to write master node, "
|
||||
"error %d", err);
|
||||
} else {
|
||||
for (i = 0; i < c->jhead_cnt; i++)
|
||||
/* Make sure write-buffer timers are canceled */
|
||||
hrtimer_cancel(&c->jheads[i].wbuf.timer);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue