Ignore:
Timestamp:
Apr 21, 2017, 4:28:29 AM (2 months ago)
Author:
brainslayer
Message:

update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-3.18/drivers/net/usb/pegasus.c

    r25370 r31885  
    127127static int get_registers(pegasus_t *pegasus, __u16 indx, __u16 size, void *data)
    128128{
     129        u8 *buf;
    129130        int ret;
     131
     132        buf = kmalloc(size, GFP_NOIO);
     133        if (!buf)
     134                return -ENOMEM;
    130135
    131136        ret = usb_control_msg(pegasus->usb, usb_rcvctrlpipe(pegasus->usb, 0),
    132137                              PEGASUS_REQ_GET_REGS, PEGASUS_REQT_READ, 0,
    133                               indx, data, size, 1000);
     138                              indx, buf, size, 1000);
    134139        if (ret < 0)
    135140                netif_dbg(pegasus, drv, pegasus->net,
    136141                          "%s returned %d\n", __func__, ret);
     142        else if (ret <= size)
     143                memcpy(data, buf, ret);
     144        kfree(buf);
    137145        return ret;
    138146}
    139147
    140 static int set_registers(pegasus_t *pegasus, __u16 indx, __u16 size, void *data)
    141 {
     148static int set_registers(pegasus_t *pegasus, __u16 indx, __u16 size,
     149                         const void *data)
     150{
     151        u8 *buf;
    142152        int ret;
     153
     154        buf = kmemdup(data, size, GFP_NOIO);
     155        if (!buf)
     156                return -ENOMEM;
    143157
    144158        ret = usb_control_msg(pegasus->usb, usb_sndctrlpipe(pegasus->usb, 0),
    145159                              PEGASUS_REQ_SET_REGS, PEGASUS_REQT_WRITE, 0,
    146                               indx, data, size, 100);
     160                              indx, buf, size, 100);
    147161        if (ret < 0)
    148162                netif_dbg(pegasus, drv, pegasus->net,
    149163                          "%s returned %d\n", __func__, ret);
     164        kfree(buf);
    150165        return ret;
    151166}
     
    153168static int set_register(pegasus_t *pegasus, __u16 indx, __u8 data)
    154169{
     170        u8 *buf;
    155171        int ret;
     172
     173        buf = kmemdup(&data, 1, GFP_NOIO);
     174        if (!buf)
     175                return -ENOMEM;
    156176
    157177        ret = usb_control_msg(pegasus->usb, usb_sndctrlpipe(pegasus->usb, 0),
    158178                              PEGASUS_REQ_SET_REG, PEGASUS_REQT_WRITE, data,
    159                               indx, &data, 1, 1000);
     179                              indx, buf, 1, 1000);
    160180        if (ret < 0)
    161181                netif_dbg(pegasus, drv, pegasus->net,
    162182                          "%s returned %d\n", __func__, ret);
     183        kfree(buf);
    163184        return ret;
    164185}
Note: See TracChangeset for help on using the changeset viewer.