[PATCH 4.19 246/323] s390/cio: check the subchannel validity for dev_busid

From: Greg Kroah-Hartman
Date: Wed Nov 24 2021 - 08:12:31 EST


From: Vineeth Vijayan <vneethv@xxxxxxxxxxxxx>

commit a4751f157c194431fae9e9c493f456df8272b871 upstream.

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@xxxxxxxxxxxxxxx>
Reported-by: Cornelia Huck <cohuck@xxxxxxxxxx>
Signed-off-by: Vineeth Vijayan <vneethv@xxxxxxxxxxxxx>
Reviewed-by: Cornelia Huck <cohuck@xxxxxxxxxx>
Link: https://lore.kernel.org/r/20211105154451.847288-1-vneethv@xxxxxxxxxxxxx
Signed-off-by: Vasily Gorbik <gor@xxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
drivers/s390/cio/css.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/s390/cio/css.c
+++ b/drivers/s390/cio/css.c
@@ -371,8 +371,8 @@ static ssize_t dev_busid_show(struct 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