[haiku-commits] haiku: hrev54072 - src/add-ons/kernel/bus_managers/i2c src/add-ons/kernel/bus_managers/scsi src/add-ons/kernel/drivers/disk/scsi/scsi_disk headers/private/shared

  • From: Jérôme Duval <jerome.duval@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 20 Apr 2020 10:56:27 -0400 (EDT)

hrev54072 adds 3 changesets to branch 'master'
old head: ffc770c1f4edc67f6668fc78b99940df6a3bc499
new head: 04ff1cfaef5441437c07d65577634cd2f4d7891e
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=04ff1cfaef54+%5Effc770c1f4ed

----------------------------------------------------------------------------

9219768a974a: scsi: add device names
  
  Change-Id: Ifca8911a095ee93daf1b4976a037dbd7c016e923
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/2494
  Reviewed-by: Jérôme Duval <jerome.duval@xxxxxxxxx>

b29db8ebbb67: AutoDeleter: add Get method for FileDescriptorCloser
  
  This allows to use FileDescriptorCloser as unique pointer for file descriptor.
  
  Change-Id: I4c768fafba6ed35658b2fdb075b9b547f53bc8da
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/2495
  Reviewed-by: Jérôme Duval <jerome.duval@xxxxxxxxx>

04ff1cfaef54: i2c bus_raw: fix passing cmdBuffer, handle large buffer size
  
  Change-Id: Ia2965d465899d087f0cbf8f7b07a7a326ed305db
  Reviewed-on: https://review.haiku-os.org/c/haiku/+/2496
  Reviewed-by: Jérôme Duval <jerome.duval@xxxxxxxxx>

                                              [ X512 <danger_mail@xxxxxxx> ]

----------------------------------------------------------------------------

4 files changed, 26 insertions(+), 5 deletions(-)
headers/private/shared/AutoDeleter.h             |  5 +++++
src/add-ons/kernel/bus_managers/i2c/bus_raw.cpp  | 22 +++++++++++++++-----
.../kernel/bus_managers/scsi/sim_interface.cpp   |  3 +++
.../drivers/disk/scsi/scsi_disk/scsi_disk.cpp    |  1 +

############################################################################

Commit:      9219768a974ab8dfef2cc24fb34f9ad8a7d7095a
URL:         https://git.haiku-os.org/haiku/commit/?id=9219768a974a
Author:      X512 <danger_mail@xxxxxxx>
Date:        Thu Apr 16 08:36:17 2020 UTC
Committer:   Jérôme Duval <jerome.duval@xxxxxxxxx>
Commit-Date: Mon Apr 20 14:56:16 2020 UTC

scsi: add device names

Change-Id: Ifca8911a095ee93daf1b4976a037dbd7c016e923
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2494
Reviewed-by: Jérôme Duval <jerome.duval@xxxxxxxxx>

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/bus_managers/scsi/sim_interface.cpp 
b/src/add-ons/kernel/bus_managers/scsi/sim_interface.cpp
index 30b3fcc7fd..af6a519be4 100644
--- a/src/add-ons/kernel/bus_managers/scsi/sim_interface.cpp
+++ b/src/add-ons/kernel/bus_managers/scsi/sim_interface.cpp
@@ -46,6 +46,9 @@ scsi_controller_added(device_node *parent)
 
        {
                device_attr attrs[] = {
+                       { B_DEVICE_PRETTY_NAME, B_STRING_TYPE,
+                               { string: "SCSI Controller" }},
+
                        // remember who we are
                        // (could use the controller name, but probably some 
software would choke)
                        // TODO create_id() generates a 32 bit ranged integer 
but we need only 8 bits
diff --git a/src/add-ons/kernel/drivers/disk/scsi/scsi_disk/scsi_disk.cpp 
b/src/add-ons/kernel/drivers/disk/scsi/scsi_disk/scsi_disk.cpp
index 5d6e0619ad..05246eb063 100644
--- a/src/add-ons/kernel/drivers/disk/scsi/scsi_disk/scsi_disk.cpp
+++ b/src/add-ons/kernel/drivers/disk/scsi/scsi_disk/scsi_disk.cpp
@@ -556,6 +556,7 @@ das_register_device(device_node *node)
 
        // ready to register
        device_attr attrs[] = {
+               { B_DEVICE_PRETTY_NAME, B_STRING_TYPE, { string: "SCSI Disk" }},
                // tell block_io whether the device is removable
                {"removable", B_UINT8_TYPE, {ui8: 
deviceInquiry->removable_medium}},
                // impose own max block restriction

############################################################################

Commit:      b29db8ebbb678e8ae8f9b6e0e35030841be78052
URL:         https://git.haiku-os.org/haiku/commit/?id=b29db8ebbb67
Author:      X512 <danger_mail@xxxxxxx>
Date:        Sat Apr 18 11:49:19 2020 UTC
Committer:   Jérôme Duval <jerome.duval@xxxxxxxxx>
Commit-Date: Mon Apr 20 14:56:16 2020 UTC

AutoDeleter: add Get method for FileDescriptorCloser

This allows to use FileDescriptorCloser as unique pointer for file descriptor.

Change-Id: I4c768fafba6ed35658b2fdb075b9b547f53bc8da
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2495
Reviewed-by: Jérôme Duval <jerome.duval@xxxxxxxxx>

----------------------------------------------------------------------------

diff --git a/headers/private/shared/AutoDeleter.h 
b/headers/private/shared/AutoDeleter.h
index a508fefd9b..78966ba319 100644
--- a/headers/private/shared/AutoDeleter.h
+++ b/headers/private/shared/AutoDeleter.h
@@ -254,6 +254,11 @@ struct FileDescriptorCloser {
                SetTo(-1);
        }
 
+       inline int Get()
+       {
+               return fDescriptor;
+       }
+
        inline int Detach()
        {
                int descriptor = fDescriptor;

############################################################################

Revision:    hrev54072
Commit:      04ff1cfaef5441437c07d65577634cd2f4d7891e
URL:         https://git.haiku-os.org/haiku/commit/?id=04ff1cfaef54
Author:      X512 <danger_mail@xxxxxxx>
Date:        Fri Apr 17 19:02:42 2020 UTC
Committer:   Jérôme Duval <jerome.duval@xxxxxxxxx>
Commit-Date: Mon Apr 20 14:56:16 2020 UTC

i2c bus_raw: fix passing cmdBuffer, handle large buffer size

Change-Id: Ia2965d465899d087f0cbf8f7b07a7a326ed305db
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2496
Reviewed-by: Jérôme Duval <jerome.duval@xxxxxxxxx>

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/bus_managers/i2c/bus_raw.cpp 
b/src/add-ons/kernel/bus_managers/i2c/bus_raw.cpp
index dfe3af8674..885d4edc8f 100644
--- a/src/add-ons/kernel/bus_managers/i2c/bus_raw.cpp
+++ b/src/add-ons/kernel/bus_managers/i2c/bus_raw.cpp
@@ -6,6 +6,8 @@
 
 #include "I2CPrivate.h"
 
+#include <StackOrHeapArray.h>
+
 
 static status_t
 i2c_bus_raw_init(void* driverCookie, void **_cookie)
@@ -64,14 +66,23 @@ i2c_bus_raw_control(void *_cookie, uint32 op, void *data, 
size_t length)
                case I2CEXEC:
                {
                        i2c_ioctl_exec exec;
-                       uint8 cmdBuffer[32];
-                       uint8 buffer[32];
                        const void*     userCmdBuffer = NULL;
                        void* userBuffer = NULL;
                        if (user_memcpy(&exec, data, sizeof(i2c_ioctl_exec)) != 
B_OK)
                                return B_BAD_ADDRESS;
+
+                       if (exec.cmdBuffer == NULL)
+                               exec.cmdLength = 0;
+                       if (exec.buffer == NULL)
+                               exec.bufferLength = 0;
+                       BStackOrHeapArray<uint8, 32> cmdBuffer(exec.cmdLength);
+                       BStackOrHeapArray<uint8, 32> buffer(exec.bufferLength);
+                       if (!cmdBuffer.IsValid() || !buffer.IsValid())
+                               return B_NO_MEMORY;
+
                        if (exec.cmdBuffer != NULL) {
-                               if (user_memcpy(cmdBuffer, exec.cmdBuffer, 
exec.cmdLength)
+                               if (!IS_USER_ADDRESS(exec.cmdBuffer)
+                                       || user_memcpy(cmdBuffer, 
exec.cmdBuffer, exec.cmdLength)
                                        != B_OK) {
                                        return B_BAD_ADDRESS;
                                }
@@ -79,7 +90,8 @@ i2c_bus_raw_control(void *_cookie, uint32 op, void *data, 
size_t length)
                                exec.cmdBuffer = cmdBuffer;
                        }
                        if (exec.buffer != NULL) {
-                               if (user_memcpy(buffer, exec.buffer, 
exec.bufferLength)
+                               if (!IS_USER_ADDRESS(exec.buffer)
+                                       || user_memcpy(buffer, exec.buffer, 
exec.bufferLength)
                                        != B_OK) {
                                        return B_BAD_ADDRESS;
                                }
@@ -92,7 +104,7 @@ i2c_bus_raw_control(void *_cookie, uint32 op, void *data, 
size_t length)
                                return status;
 
                        status = bus->ExecCommand(exec.op, exec.addr,
-                               &exec.cmdBuffer, exec.cmdLength, exec.buffer,
+                               exec.cmdBuffer, exec.cmdLength, exec.buffer,
                                exec.bufferLength);
                        bus->ReleaseBus();
 


Other related posts:

  • » [haiku-commits] haiku: hrev54072 - src/add-ons/kernel/bus_managers/i2c src/add-ons/kernel/bus_managers/scsi src/add-ons/kernel/drivers/disk/scsi/scsi_disk headers/private/shared - Jérôme Duval