]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
uacce: fix isolate sysfs check condition
authorChenghai Huang <huangchenghai2@huawei.com>
Tue, 2 Dec 2025 06:12:54 +0000 (14:12 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 16 Jan 2026 15:43:16 +0000 (16:43 +0100)
uacce supports the device isolation feature. If the driver
implements the isolate_err_threshold_read and
isolate_err_threshold_write callback functions, uacce will create
sysfs files now. Users can read and configure the isolation policy
through sysfs. Currently, sysfs files are created as long as either
isolate_err_threshold_read or isolate_err_threshold_write callback
functions are present.

However, accessing a non-existent callback function may cause the
system to crash. Therefore, intercept the creation of sysfs if
neither read nor write exists; create sysfs if either is supported,
but intercept unsupported operations at the call site.

Fixes: e3e289fbc0b5 ("uacce: supports device isolation feature")
Cc: stable@vger.kernel.org
Signed-off-by: Chenghai Huang <huangchenghai2@huawei.com>
Acked-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Link: https://patch.msgid.link/20251202061256.4158641-3-huangchenghai2@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/uacce/uacce.c

index 43d215fb8c7375ae1099c72fc9e48f5aebd1866f..b0b3c1562d526b0e45a2946a17c572488d8e804e 100644 (file)
@@ -382,6 +382,9 @@ static ssize_t isolate_strategy_show(struct device *dev, struct device_attribute
        struct uacce_device *uacce = to_uacce_device(dev);
        u32 val;
 
+       if (!uacce->ops->isolate_err_threshold_read)
+               return -ENOENT;
+
        val = uacce->ops->isolate_err_threshold_read(uacce);
 
        return sysfs_emit(buf, "%u\n", val);
@@ -394,6 +397,9 @@ static ssize_t isolate_strategy_store(struct device *dev, struct device_attribut
        unsigned long val;
        int ret;
 
+       if (!uacce->ops->isolate_err_threshold_write)
+               return -ENOENT;
+
        if (kstrtoul(buf, 0, &val) < 0)
                return -EINVAL;