powerpc/hv-gpci: Add return value check in affinity_domain_via_partition_show function
authorKajol Jain <kjain@linux.ibm.com>
Thu, 16 Nov 2023 12:20:32 +0000 (17:50 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 13 Dec 2023 10:05:03 +0000 (21:05 +1100)
To access hv-gpci kernel interface files data, the
"Enable Performance Information Collection" option has to be set
in hmc. Incase that option is not set and user try to read
the interface files, it should give error message as
operation not permitted.

Result of accessing added interface files with disabled
performance collection option:

[command]# cat processor_bus_topology
cat: processor_bus_topology: Operation not permitted

[command]# cat processor_config
cat: processor_config: Operation not permitted

[command]# cat affinity_domain_via_domain
cat: affinity_domain_via_domain: Operation not permitted

[command]# cat affinity_domain_via_virtual_processor
cat: affinity_domain_via_virtual_processor: Operation not permitted

[command]# cat affinity_domain_via_partition

Based on above result there is no error message when reading
affinity_domain_via_partition file because of missing
check for failed hcall. Fix this issue by adding
a check in the start of affinity_domain_via_partition_show
function, to return error incase hcall fails, with error type
other then H_PARAMETER.

Fixes: a15e0d6a6929 ("powerpc/hv_gpci: Add sysfs file inside hv_gpci device to show affinity domain via partition information")
Reported-by: Disha Goel <disgoel@linux.vnet.ibm.com>
Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20231116122033.160964-1-kjain@linux.ibm.com
arch/powerpc/perf/hv-gpci.c

index 39dbe6b348df281357ecf8af26f4d9309c885a94..27f18119fda17474bb883a8e03f894239680ee1a 100644 (file)
@@ -534,6 +534,9 @@ static ssize_t affinity_domain_via_partition_show(struct device *dev, struct dev
        if (!ret)
                goto parse_result;
 
+       if (ret && (ret != H_PARAMETER))
+               goto out;
+
        /*
         * ret value as 'H_PARAMETER' implies that the current buffer size
         * can't accommodate all the information, and a partial buffer