diff options
| author | Quentin Lambert <lambert.quentin@gmail.com> | 2016-11-19 12:43:18 -0500 |
|---|---|---|
| committer | Martin K. Petersen <martin.petersen@oracle.com> | 2016-11-22 17:04:32 -0500 |
| commit | 2d76a2478bb8c54d241b23a699d55f90b7efd036 (patch) | |
| tree | bf5211c46f225ad49b5a26873f9c3b7c6df9f056 /drivers/scsi/pmcraid.c | |
| parent | 75b1cc4ad63afa28c1a045b5157c008f405f06a9 (diff) | |
scsi: pmcraid: Add missing resource releases
Most error branches following the call to pmcraid_get_free_cmd contain a
call to pmcraid_return_cmd. This patch add these calls where they are
missing.
Moreover, most error branches following the call to class_create contain
a call to class_destroy. This patch add these calls where they are
missing.
This issue was found with Hector.
Signed-off-by: Quentin Lambert <lambert.quentin@gmail.com>
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
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 | ||
