Message ID | 20220216095843.30149-2-krzysztof.kozlowski@canonical.com |
---|---|
State | New |
Headers | show |
Series | [SRU,I,J,1/1] s390/cio: verify the driver availability for path_event call | expand |
On 16.02.22 10:58, Krzysztof Kozlowski wrote: > From: Vineeth Vijayan <vneethv@linux.ibm.com> > > BugLink: https://bugs.launchpad.net/bugs/1960875 > > If no driver is attached to a device or the driver does not provide the > path_event function, an FCES path-event on this device could end up in a > kernel-panic. Verify the driver availability before the path_event > function call. > > Fixes: 32ef938815c1 ("s390/cio: Add support for FCES status notification") > Cc: stable@vger.kernel.org > Signed-off-by: Vineeth Vijayan <vneethv@linux.ibm.com> > Suggested-by: Peter Oberparleiter <oberpar@linux.ibm.com> > Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com> > Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com> > Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> > (cherry picked from commit dd9cb842fa9d90653a9b48aba52f89c069f3bc50) > Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> Acked-by: Stefan Bader <stefan.bader@canonical.com> > --- > drivers/s390/cio/device.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c > index 84f659cafe76..ab734b66d008 100644 > --- a/drivers/s390/cio/device.c > +++ b/drivers/s390/cio/device.c > @@ -1208,7 +1208,7 @@ static int io_subchannel_chp_event(struct subchannel *sch, > else > path_event[chpid] = PE_NONE; > } > - if (cdev) > + if (cdev && cdev->drv && cdev->drv->path_event) > cdev->drv->path_event(cdev, path_event); > break; > }
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index 84f659cafe76..ab734b66d008 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c @@ -1208,7 +1208,7 @@ static int io_subchannel_chp_event(struct subchannel *sch, else path_event[chpid] = PE_NONE; } - if (cdev) + if (cdev && cdev->drv && cdev->drv->path_event) cdev->drv->path_event(cdev, path_event); break; }