[S390] cio: fix sanity checks in device_ops.
Some sanity checks in device_ops.c test the output of container_of macros to be !NULL. Test the input parameters instead. Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
bcf5cef7db
commit
e45efa99b0
|
@ -114,7 +114,7 @@ int ccw_device_clear(struct ccw_device *cdev, unsigned long intparm)
|
|||
struct subchannel *sch;
|
||||
int ret;
|
||||
|
||||
if (!cdev)
|
||||
if (!cdev || !cdev->dev.parent)
|
||||
return -ENODEV;
|
||||
if (cdev->private->state == DEV_STATE_NOT_OPER)
|
||||
return -ENODEV;
|
||||
|
@ -122,8 +122,6 @@ int ccw_device_clear(struct ccw_device *cdev, unsigned long intparm)
|
|||
cdev->private->state != DEV_STATE_W4SENSE)
|
||||
return -EINVAL;
|
||||
sch = to_subchannel(cdev->dev.parent);
|
||||
if (!sch)
|
||||
return -ENODEV;
|
||||
ret = cio_clear(sch);
|
||||
if (ret == 0)
|
||||
cdev->private->intparm = intparm;
|
||||
|
@ -161,11 +159,9 @@ int ccw_device_start_key(struct ccw_device *cdev, struct ccw1 *cpa,
|
|||
struct subchannel *sch;
|
||||
int ret;
|
||||
|
||||
if (!cdev)
|
||||
if (!cdev || !cdev->dev.parent)
|
||||
return -ENODEV;
|
||||
sch = to_subchannel(cdev->dev.parent);
|
||||
if (!sch)
|
||||
return -ENODEV;
|
||||
if (cdev->private->state == DEV_STATE_NOT_OPER)
|
||||
return -ENODEV;
|
||||
if (cdev->private->state == DEV_STATE_VERIFY ||
|
||||
|
@ -339,7 +335,7 @@ int ccw_device_halt(struct ccw_device *cdev, unsigned long intparm)
|
|||
struct subchannel *sch;
|
||||
int ret;
|
||||
|
||||
if (!cdev)
|
||||
if (!cdev || !cdev->dev.parent)
|
||||
return -ENODEV;
|
||||
if (cdev->private->state == DEV_STATE_NOT_OPER)
|
||||
return -ENODEV;
|
||||
|
@ -347,8 +343,6 @@ int ccw_device_halt(struct ccw_device *cdev, unsigned long intparm)
|
|||
cdev->private->state != DEV_STATE_W4SENSE)
|
||||
return -EINVAL;
|
||||
sch = to_subchannel(cdev->dev.parent);
|
||||
if (!sch)
|
||||
return -ENODEV;
|
||||
ret = cio_halt(sch);
|
||||
if (ret == 0)
|
||||
cdev->private->intparm = intparm;
|
||||
|
@ -372,11 +366,9 @@ int ccw_device_resume(struct ccw_device *cdev)
|
|||
{
|
||||
struct subchannel *sch;
|
||||
|
||||
if (!cdev)
|
||||
if (!cdev || !cdev->dev.parent)
|
||||
return -ENODEV;
|
||||
sch = to_subchannel(cdev->dev.parent);
|
||||
if (!sch)
|
||||
return -ENODEV;
|
||||
if (cdev->private->state == DEV_STATE_NOT_OPER)
|
||||
return -ENODEV;
|
||||
if (cdev->private->state != DEV_STATE_ONLINE ||
|
||||
|
@ -471,11 +463,11 @@ __u8 ccw_device_get_path_mask(struct ccw_device *cdev)
|
|||
{
|
||||
struct subchannel *sch;
|
||||
|
||||
sch = to_subchannel(cdev->dev.parent);
|
||||
if (!sch)
|
||||
if (!cdev->dev.parent)
|
||||
return 0;
|
||||
else
|
||||
return sch->lpm;
|
||||
|
||||
sch = to_subchannel(cdev->dev.parent);
|
||||
return sch->lpm;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue