When device_create_file() fails and returns a non-zero value, no error return code of driver_sysfs_add() is assigned. To fix this bug, ret is assigned with the return value of device_create_file(), and then ret is checked.
Reported-by: TOTE Robot <os...@tsinghua.edu.cn> Signed-off-by: Jia-Ju Bai <baijiaju1...@gmail.com> --- v2: * Fix a redundant whitespace. Thank Greg for good advice. --- drivers/base/dd.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 9179825ff646..704ae8a90a00 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -413,8 +413,11 @@ static int driver_sysfs_add(struct device *dev) if (ret) goto rm_dev; - if (!IS_ENABLED(CONFIG_DEV_COREDUMP) || !dev->driver->coredump || - !device_create_file(dev, &dev_attr_coredump)) + if (!IS_ENABLED(CONFIG_DEV_COREDUMP) || !dev->driver->coredump) + return 0; + + ret = device_create_file(dev, &dev_attr_coredump); + if (!ret) return 0; sysfs_remove_link(&dev->kobj, "driver"); -- 2.17.1