]> Pileus Git - ~andy/linux/blobdiff - drivers/staging/usbip/usbip_common.c
staging: usbip: replaced pointer arithmetic, and strongly type function return.
[~andy/linux] / drivers / staging / usbip / usbip_common.c
index 57f11f9cd8a583517cf4b16b2ddc722b6e84d967..ec7a8853d07353256e22543c26f0bf0197c2af7a 100644 (file)
@@ -639,28 +639,26 @@ static void usbip_pack_iso(struct usbip_iso_packet_descriptor *iso,
 }
 
 /* must free buffer */
-void *usbip_alloc_iso_desc_pdu(struct urb *urb, ssize_t *bufflen)
+struct usbip_iso_packet_descriptor*
+usbip_alloc_iso_desc_pdu(struct urb *urb, ssize_t *bufflen)
 {
-       void *buff;
        struct usbip_iso_packet_descriptor *iso;
        int np = urb->number_of_packets;
        ssize_t size = np * sizeof(*iso);
        int i;
 
-       buff = kzalloc(size, GFP_KERNEL);
-       if (!buff)
+       iso = kzalloc(size, GFP_KERNEL);
+       if (!iso)
                return NULL;
 
        for (i = 0; i < np; i++) {
-               iso = buff + (i * sizeof(*iso));
-
-               usbip_pack_iso(iso, &urb->iso_frame_desc[i], 1);
-               usbip_iso_packet_correct_endian(iso, 1);
+               usbip_pack_iso(&iso[i], &urb->iso_frame_desc[i], 1);
+               usbip_iso_packet_correct_endian(&iso[i], 1);
        }
 
        *bufflen = size;
 
-       return buff;
+       return iso;
 }
 EXPORT_SYMBOL_GPL(usbip_alloc_iso_desc_pdu);
 
@@ -703,11 +701,10 @@ int usbip_recv_iso(struct usbip_device *ud, struct urb *urb)
                return -EPIPE;
        }
 
+       iso = (struct usbip_iso_packet_descriptor *) buff;
        for (i = 0; i < np; i++) {
-               iso = buff + (i * sizeof(*iso));
-
-               usbip_iso_packet_correct_endian(iso, 0);
-               usbip_pack_iso(iso, &urb->iso_frame_desc[i], 0);
+               usbip_iso_packet_correct_endian(&iso[i], 0);
+               usbip_pack_iso(&iso[i], &urb->iso_frame_desc[i], 0);
                total_length += urb->iso_frame_desc[i].actual_length;
        }