[haiku-commits] Change in haiku[master]: usb_disk: use MutexLocker

  • From: Gerrit <review@xxxxxxxxxxxxxxxxxxx>
  • To: waddlesplash <waddlesplash@xxxxxxxxx>, haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 17 Jan 2021 01:59:30 +0000

From X512 <danger_mail@xxxxxxx>:

X512 has uploaded this change for review. ( 
https://review.haiku-os.org/c/haiku/+/3638 ;)


Change subject: usb_disk: use MutexLocker
......................................................................

usb_disk: use MutexLocker

Change-Id: Ic3994f6267ea24cf776cb067e0d94226132f4c7e
---
M src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp
1 file changed, 22 insertions(+), 43 deletions(-)



  git pull ssh://git.haiku-os.org:22/haiku refs/changes/38/3638/1

diff --git a/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp 
b/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp
index e76fb8e..2ba1f0a 100644
--- a/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp
+++ b/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp
@@ -1774,25 +1774,21 @@
 {
        device_lun *lun = (device_lun *)cookie;
        disk_device *device = lun->device;
-       mutex_lock(&device->lock);
-       if (device->removed) {
-               mutex_unlock(&device->lock);
+       MutexLocker locker(&device->lock);
+       if (device->removed)
                return B_DEV_NOT_READY;
-       }

-       status_t result = B_DEV_INVALID_IOCTL;
+       status_t result;
        switch (op) {
                case B_GET_DEVICE_SIZE: {
                        if (lun->media_changed) {
                                result = usb_disk_update_capacity(lun);
                                if (result != B_OK)
-                                       break;
+                                       return result;
                        }

                        size_t size = lun->block_size * lun->block_count;
-                       result = user_memcpy(buffer, &size, sizeof(size));
-
-                       break;
+                       return user_memcpy(buffer, &size, sizeof(size));
                }

                case B_GET_MEDIA_STATUS:
@@ -1810,8 +1806,7 @@
                        }
                        TRACE("B_GET_MEDIA_STATUS: 0x%08" B_PRIx32 "\n",
                                *(status_t *)buffer);
-                       result = B_OK;
-                       break;
+                       return B_OK;
                }

                case B_GET_GEOMETRY:
@@ -1819,7 +1814,7 @@
                        if (lun->media_changed) {
                                result = usb_disk_update_capacity(lun);
                                if (result != B_OK)
-                                       break;
+                                       return result;
                        }

                        device_geometry geometry;
@@ -1833,14 +1828,12 @@
                        TRACE("B_GET_GEOMETRY: %" B_PRId32 " sectors at %" 
B_PRId32
                                " bytes per sector\n", geometry.cylinder_count,
                                geometry.bytes_per_sector);
-                       result = user_memcpy(buffer, &geometry, 
sizeof(device_geometry));
-                       break;
+                       return user_memcpy(buffer, &geometry, 
sizeof(device_geometry));
                }

                case B_FLUSH_DRIVE_CACHE:
                        TRACE("B_FLUSH_DRIVE_CACHE\n");
-                       result = usb_disk_synchronize(lun, true);
-                       break;
+                       return usb_disk_synchronize(lun, true);

                case B_EJECT_DEVICE:
                {
@@ -1851,9 +1844,8 @@
                        commandBlock[1] = lun->logical_unit_number << 5;
                        commandBlock[4] = 2;

-                       result = usb_disk_operation(lun, commandBlock, 6, NULL, 
NULL,
+                       return usb_disk_operation(lun, commandBlock, 6, NULL, 
NULL,
                                false);
-                       break;
                }

                case B_LOAD_MEDIA:
@@ -1865,9 +1857,8 @@
                        commandBlock[1] = lun->logical_unit_number << 5;
                        commandBlock[4] = 3;

-                       result = usb_disk_operation(lun, commandBlock, 6, NULL, 
NULL,
+                       return usb_disk_operation(lun, commandBlock, 6, NULL, 
NULL,
                                false);
-                       break;
                }

                case B_GET_ICON:
@@ -1907,9 +1898,8 @@
                                        }
                                        break;
                        }
-                       result = user_strlcpy((char *)buffer, iconName,
+                       return user_strlcpy((char *)buffer, iconName,
                                B_FILE_NAME_LENGTH);
-                       break;
                }

                case B_GET_VECTOR_ICON:
@@ -1918,10 +1908,8 @@
                        char vendor[sizeof(lun->vendor_name)+1];
                        char product[sizeof(lun->product_name)+1];

-                       if (length != sizeof(device_icon)) {
-                               result = B_BAD_VALUE;
-                               break;
-                       }
+                       if (length != sizeof(device_icon))
+                               return B_BAD_VALUE;

                        if (device->is_ufi) {
                                // UFI is specific for floppy drives
@@ -1954,22 +1942,17 @@
                        }

                        device_icon iconData;
-                       if (user_memcpy(&iconData, buffer, sizeof(device_icon)) 
!= B_OK) {
-                               result = B_BAD_ADDRESS;
-                               break;
-                       }
+                       if (user_memcpy(&iconData, buffer, sizeof(device_icon)) 
!= B_OK)
+                               return B_BAD_ADDRESS;

                        if (iconData.icon_size >= icon->icon_size) {
                                if (user_memcpy(iconData.icon_data, 
icon->icon_data,
-                                               (size_t)icon->icon_size) != 
B_OK) {
-                                       result = B_BAD_ADDRESS;
-                                       break;
-                               }
+                                               (size_t)icon->icon_size) != 
B_OK)
+                                       return B_BAD_ADDRESS;
                        }

                        iconData.icon_size = icon->icon_size;
-                       result = user_memcpy(buffer, &iconData, 
sizeof(device_icon));
-                       break;
+                       return user_memcpy(buffer, &iconData, 
sizeof(device_icon));
                }

                case B_GET_DEVICE_NAME:
@@ -1989,16 +1972,12 @@

                        TRACE_ALWAYS("got device name \"%s\": %s\n", name,
                                strerror(result));
-                       break;
+                       return result;
                }
-
-               default:
-                       TRACE_ALWAYS("unhandled ioctl %" B_PRId32 "\n", op);
-                       break;
        }

-       mutex_unlock(&device->lock);
-       return result;
+       TRACE_ALWAYS("unhandled ioctl %" B_PRId32 "\n", op);
+       return B_DEV_INVALID_IOCTL;
 }



--
To view, visit https://review.haiku-os.org/c/haiku/+/3638
To unsubscribe, or for help writing mail filters, visit 
https://review.haiku-os.org/settings

Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: Ic3994f6267ea24cf776cb067e0d94226132f4c7e
Gerrit-Change-Number: 3638
Gerrit-PatchSet: 1
Gerrit-Owner: X512 <danger_mail@xxxxxxx>
Gerrit-MessageType: newchange

Other related posts:

  • » [haiku-commits] Change in haiku[master]: usb_disk: use MutexLocker - Gerrit