Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

reset: bail if try_module_get() fails

Abort instead of returning a new reset control for a reset controller
device that is going to have its module unloaded.

Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Fixes: 61fc41317666 ("reset: Add reset controller API")
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Link: https://lore.kernel.org/r/20210607082615.15160-1-p.zabel@pengutronix.de
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>

+4 -1
+4 -1
drivers/reset/core.c
··· 774 774 if (!rstc) 775 775 return ERR_PTR(-ENOMEM); 776 776 777 - try_module_get(rcdev->owner); 777 + if (!try_module_get(rcdev->owner)) { 778 + kfree(rstc); 779 + return ERR_PTR(-ENODEV); 780 + } 778 781 779 782 rstc->rcdev = rcdev; 780 783 list_add(&rstc->list, &rcdev->reset_control_head);