diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_cfdc.c')
| -rw-r--r-- | drivers/s390/scsi/zfcp_cfdc.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/s390/scsi/zfcp_cfdc.c b/drivers/s390/scsi/zfcp_cfdc.c index 8305c874e86f..ef681dfed0cc 100644 --- a/drivers/s390/scsi/zfcp_cfdc.c +++ b/drivers/s390/scsi/zfcp_cfdc.c | |||
| @@ -86,8 +86,23 @@ static int zfcp_cfdc_copy_to_user(void __user *user_buffer, | |||
| 86 | static struct zfcp_adapter *zfcp_cfdc_get_adapter(u32 devno) | 86 | static struct zfcp_adapter *zfcp_cfdc_get_adapter(u32 devno) |
| 87 | { | 87 | { |
| 88 | char busid[9]; | 88 | char busid[9]; |
| 89 | struct ccw_device *ccwdev; | ||
| 90 | struct zfcp_adapter *adapter = NULL; | ||
| 91 | |||
| 89 | snprintf(busid, sizeof(busid), "0.0.%04x", devno); | 92 | snprintf(busid, sizeof(busid), "0.0.%04x", devno); |
| 90 | return zfcp_get_adapter_by_busid(busid); | 93 | ccwdev = get_ccwdev_by_busid(&zfcp_ccw_driver, busid); |
| 94 | if (!ccwdev) | ||
| 95 | goto out; | ||
| 96 | |||
| 97 | adapter = dev_get_drvdata(&ccwdev->dev); | ||
| 98 | if (!adapter) | ||
| 99 | goto out_put; | ||
| 100 | |||
| 101 | zfcp_adapter_get(adapter); | ||
| 102 | out_put: | ||
| 103 | put_device(&ccwdev->dev); | ||
| 104 | out: | ||
| 105 | return adapter; | ||
| 91 | } | 106 | } |
| 92 | 107 | ||
| 93 | static int zfcp_cfdc_set_fsf(struct zfcp_fsf_cfdc *fsf_cfdc, int command) | 108 | static int zfcp_cfdc_set_fsf(struct zfcp_fsf_cfdc *fsf_cfdc, int command) |
