s390/cio: check the subchannel validity for dev_busid
authorVineeth Vijayan <vneethv@linux.ibm.com>
Fri, 5 Nov 2021 15:44:51 +0000 (16:44 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Mon, 8 Nov 2021 13:17:49 +0000 (14:17 +0100)
Check the validity of subchanel before reading other fields in
the schib.

Fixes: d3683c055212 ("s390/cio: add dev_busid sysfs entry for each subchannel")
CC: <stable@vger.kernel.org>
Reported-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Vineeth Vijayan <vneethv@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Link: https://lore.kernel.org/r/20211105154451.847288-1-vneethv@linux.ibm.com
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
drivers/s390/cio/css.c

index 2bc55cc..ce9e751 100644 (file)
@@ -437,8 +437,8 @@ static ssize_t dev_busid_show(struct device *dev,
        struct subchannel *sch = to_subchannel(dev);
        struct pmcw *pmcw = &sch->schib.pmcw;
 
-       if ((pmcw->st == SUBCHANNEL_TYPE_IO ||
-            pmcw->st == SUBCHANNEL_TYPE_MSG) && pmcw->dnv)
+       if ((pmcw->st == SUBCHANNEL_TYPE_IO && pmcw->dnv) ||
+           (pmcw->st == SUBCHANNEL_TYPE_MSG && pmcw->w))
                return sysfs_emit(buf, "0.%x.%04x\n", sch->schid.ssid,
                                  pmcw->dev);
        else