Messages in this thread Patch in this message | | | From | Duoming Zhou <> | Subject | [PATCH V9] devcoredump: add context check in dev_coredumpm | Date | Mon, 26 Sep 2022 14:16:09 +0800 |
| |
The dev_coredumpm(), dev_coredumpv() and dev_coredumpsg() could not be used in atomic context, because they call kvasprintf_const() and kstrdup() with GFP_KERNEL parameter. The process is shown below:
dev_coredumpv(.., gfp_t gfp) dev_coredumpm(.., gfp_t gfp) dev_set_name kobject_set_name_vargs kvasprintf_const(GFP_KERNEL, ...); //may sleep kstrdup(s, GFP_KERNEL); //may sleep
This patch adds context check in dev_coredumpm() in order to show dev_coredumpm() and its callers could not be used in atomic context.
What's more, this change can allow the api to evolve and will not influence the users that call this api.
Fixes: 833c95456a70 ("device coredump: add new device coredump class") Signed-off-by: Duoming Zhou <duoming@zju.edu.cn> --- Changes in v9: - Add context check in dev_coredumpm().
drivers/base/devcoredump.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/drivers/base/devcoredump.c b/drivers/base/devcoredump.c index f4d794d6bb8..806ee872f5f 100644 --- a/drivers/base/devcoredump.c +++ b/drivers/base/devcoredump.c @@ -255,6 +255,9 @@ void dev_coredumpm(struct device *dev, struct module *owner, struct devcd_entry *devcd; struct device *existing; + if (!gfpflags_normal_context(gfp)) + goto free; + if (devcd_disabled) goto free; -- 2.17.1
| |