diff options
Diffstat (limited to 'drivers/scsi/pmcraid.c')
| -rw-r--r-- | drivers/scsi/pmcraid.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c index 68a5c347fae9..cb12b7bad8e6 100644 --- a/drivers/scsi/pmcraid.c +++ b/drivers/scsi/pmcraid.c | |||
| @@ -3792,11 +3792,11 @@ static long pmcraid_ioctl_passthrough( | |||
| 3792 | direction); | 3792 | direction); |
| 3793 | if (rc) { | 3793 | if (rc) { |
| 3794 | pmcraid_err("couldn't build passthrough ioadls\n"); | 3794 | pmcraid_err("couldn't build passthrough ioadls\n"); |
| 3795 | goto out_free_buffer; | 3795 | goto out_free_cmd; |
| 3796 | } | 3796 | } |
| 3797 | } else if (request_size < 0) { | 3797 | } else if (request_size < 0) { |
| 3798 | rc = -EINVAL; | 3798 | rc = -EINVAL; |
| 3799 | goto out_free_buffer; | 3799 | goto out_free_cmd; |
| 3800 | } | 3800 | } |
| 3801 | 3801 | ||
| 3802 | /* If data is being written into the device, copy the data from user | 3802 | /* If data is being written into the device, copy the data from user |
| @@ -3913,6 +3913,8 @@ out_handle_response: | |||
| 3913 | 3913 | ||
| 3914 | out_free_sglist: | 3914 | out_free_sglist: |
| 3915 | pmcraid_release_passthrough_ioadls(cmd, request_size, direction); | 3915 | pmcraid_release_passthrough_ioadls(cmd, request_size, direction); |
| 3916 | |||
| 3917 | out_free_cmd: | ||
| 3916 | pmcraid_return_cmd(cmd); | 3918 | pmcraid_return_cmd(cmd); |
| 3917 | 3919 | ||
| 3918 | out_free_buffer: | 3920 | out_free_buffer: |
| @@ -6023,8 +6025,10 @@ static int __init pmcraid_init(void) | |||
| 6023 | 6025 | ||
| 6024 | error = pmcraid_netlink_init(); | 6026 | error = pmcraid_netlink_init(); |
| 6025 | 6027 | ||
| 6026 | if (error) | 6028 | if (error) { |
| 6029 | class_destroy(pmcraid_class); | ||
| 6027 | goto out_unreg_chrdev; | 6030 | goto out_unreg_chrdev; |
| 6031 | } | ||
| 6028 | 6032 | ||
| 6029 | error = pci_register_driver(&pmcraid_driver); | 6033 | error = pci_register_driver(&pmcraid_driver); |
| 6030 | 6034 | ||
