mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +00:00
609e28bb13
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>
45 lines
1.3 KiB
C
45 lines
1.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __PSTORE_INTERNAL_H__
|
|
#define __PSTORE_INTERNAL_H__
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/time.h>
|
|
#include <linux/pstore.h>
|
|
|
|
#define PSTORE_DEFAULT_KMSG_BYTES 10240
|
|
extern unsigned long kmsg_bytes;
|
|
|
|
#ifdef CONFIG_PSTORE_FTRACE
|
|
extern void pstore_register_ftrace(void);
|
|
extern void pstore_unregister_ftrace(void);
|
|
#else
|
|
static inline void pstore_register_ftrace(void) {}
|
|
static inline void pstore_unregister_ftrace(void) {}
|
|
#endif
|
|
|
|
#ifdef CONFIG_PSTORE_PMSG
|
|
extern void pstore_register_pmsg(void);
|
|
extern void pstore_unregister_pmsg(void);
|
|
#else
|
|
static inline void pstore_register_pmsg(void) {}
|
|
static inline void pstore_unregister_pmsg(void) {}
|
|
#endif
|
|
|
|
extern struct pstore_info *psinfo;
|
|
|
|
extern void pstore_set_kmsg_bytes(int);
|
|
extern void pstore_get_records(int);
|
|
extern void pstore_get_backend_records(struct pstore_info *psi,
|
|
struct dentry *root, int quiet);
|
|
extern int pstore_put_backend_records(struct pstore_info *psi);
|
|
extern int pstore_mkfile(struct dentry *root,
|
|
struct pstore_record *record);
|
|
extern void pstore_record_init(struct pstore_record *record,
|
|
struct pstore_info *psi);
|
|
|
|
/* Called during pstore init/exit. */
|
|
int __init pstore_init_fs(void);
|
|
void __exit pstore_exit_fs(void);
|
|
|
|
#endif
|