diff options
author | Kees Cook <keescook@chromium.org> | 2020-05-04 19:46:53 -0700 |
---|---|---|
committer | Kees Cook <keescook@chromium.org> | 2020-05-30 10:34:02 -0700 |
commit | 609e28bb139e53621521130f0d4aea27a725d465 (patch) | |
tree | 83baf007e546d152d1a474b4e3f4e775ab06c011 /fs/pstore/platform.c | |
parent | 78c83c828c043f2e18929137c1e218e8977349b1 (diff) | |
download | linux-609e28bb139e53621521130f0d4aea27a725d465.tar.bz2 |
pstore: Remove filesystem records when backend is unregistered
If a backend was unloaded without having first removed all its
associated records in pstorefs, subsequent removals would crash while
attempting to call into the now missing backend. Add automatic removal
from the tree in pstore_unregister(), so that no references to the
backend remain.
Reported-by: Luis Henriques <lhenriques@suse.com>
Link: https://lore.kernel.org/lkml/87o8yrmv69.fsf@suse.com
Link: https://lore.kernel.org/lkml/20200506152114.50375-11-keescook@chromium.org/
Signed-off-by: Kees Cook <keescook@chromium.org>
Diffstat (limited to 'fs/pstore/platform.c')
-rw-r--r-- | fs/pstore/platform.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c index 327ee70e881d..398785ab059f 100644 --- a/fs/pstore/platform.c +++ b/fs/pstore/platform.c @@ -657,6 +657,9 @@ void pstore_unregister(struct pstore_info *psi) del_timer_sync(&pstore_timer); flush_work(&pstore_work); + /* Remove all backend records from filesystem tree. */ + pstore_put_backend_records(psi); + free_buf_for_compression(); psinfo = NULL; |