From: Daniel M German <d...@turingmachine.org>

Replace ?: with min to calculate the number of bytes in the secondary buffer,
including changing the data type of data_in_secondary to size_t to be
type-consistent. data_in_secondary can never be negative.

Remove some spurious calculations (copy_to_user returns zero on success),
making one variable redundant (i)

This change does not alter the functionality of the code.

Signed-off-by: Daniel M German <d...@turingmachine.org>
---
 drivers/usb/misc/adutux.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/drivers/usb/misc/adutux.c b/drivers/usb/misc/adutux.c
index 9465fb95d70a..cbc0e54508bf 100644
--- a/drivers/usb/misc/adutux.c
+++ b/drivers/usb/misc/adutux.c
@@ -343,7 +343,6 @@ static ssize_t adu_read(struct file *file, __user char 
*buffer, size_t count,
        struct adu_device *dev;
        size_t bytes_read = 0;
        size_t bytes_to_read = count;
-       int i;
        int retval = 0;
        int timeout = 0;
        int should_submit = 0;
@@ -371,23 +370,22 @@ static ssize_t adu_read(struct file *file, __user char 
*buffer, size_t count,
        timeout = COMMAND_TIMEOUT;
        dev_dbg(&dev->udev->dev, "%s : about to start looping\n", __func__);
        while (bytes_to_read) {
-               int data_in_secondary = dev->secondary_tail - 
dev->secondary_head;
+               size_t data_in_secondary = dev->secondary_tail - 
dev->secondary_head;
                dev_dbg(&dev->udev->dev,
-                       "%s : while, data_in_secondary=%d, status=%d\n",
+                       "%s : while, data_in_secondary=%lu, status=%d\n",
                        __func__, data_in_secondary,
                        dev->interrupt_in_urb->status);
 
                if (data_in_secondary) {
                        /* drain secondary buffer */
-                       int amount = bytes_to_read < data_in_secondary ? 
bytes_to_read : data_in_secondary;
-                       i = copy_to_user(buffer, 
dev->read_buffer_secondary+dev->secondary_head, amount);
-                       if (i) {
+                       size_t amount = min(bytes_to_read, data_in_secondary);
+                       if (copy_to_user(buffer, 
dev->read_buffer_secondary+dev->secondary_head, amount)) {
                                retval = -EFAULT;
                                goto exit;
                        }
-                       dev->secondary_head += (amount - i);
-                       bytes_read += (amount - i);
-                       bytes_to_read -= (amount - i);
+                       dev->secondary_head += amount;
+                       bytes_read += amount;
+                       bytes_to_read -= amount;
                } else {
                        /* we check the primary buffer */
                        spin_lock_irqsave (&dev->buflock, flags);
-- 
2.20.1

Reply via email to