staging: usbip: replaced pointer arithmetic, and strongly type function return.
Replaced pointer arithmetic by using array indexing, and changed function return type for usbip_alloc_iso_desc_pdu from 'void*' to 'struct usbip_iso_packet_descriptor'. Signed-off-by: Bart Westgeest <bart@elbrys.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
a297ad936e
Коммит
36ac9b055f
|
@ -166,7 +166,7 @@ static int stub_send_ret_submit(struct stub_device *sdev)
|
|||
int ret;
|
||||
struct urb *urb = priv->urb;
|
||||
struct usbip_header pdu_header;
|
||||
void *iso_buffer = NULL;
|
||||
struct usbip_iso_packet_descriptor *iso_buffer = NULL;
|
||||
struct kvec *iov = NULL;
|
||||
int iovnum = 0;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -320,7 +320,9 @@ void usbip_pack_pdu(struct usbip_header *pdu, struct urb *urb, int cmd,
|
|||
int pack);
|
||||
void usbip_header_correct_endian(struct usbip_header *pdu, int send);
|
||||
|
||||
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);
|
||||
|
||||
/* some members of urb must be substituted before. */
|
||||
int usbip_recv_iso(struct usbip_device *ud, struct urb *urb);
|
||||
void usbip_pad_iso(struct usbip_device *ud, struct urb *urb);
|
||||
|
|
|
@ -76,7 +76,7 @@ static int vhci_send_cmd_submit(struct vhci_device *vdev)
|
|||
int ret;
|
||||
struct urb *urb = priv->urb;
|
||||
struct usbip_header pdu_header;
|
||||
void *iso_buffer = NULL;
|
||||
struct usbip_iso_packet_descriptor *iso_buffer = NULL;
|
||||
|
||||
txsize = 0;
|
||||
memset(&pdu_header, 0, sizeof(pdu_header));
|
||||
|
|
Загрузка…
Ссылка в новой задаче