Pull media fix from Mauro Carvalho Chehab: "A regression fix that makes the Siano driver to work again after the CONFIG_VMAP_STACK change" * tag 'media/v4.10-5' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: [media] siano: make it work again with CONFIG_VMAP_STACK
Unified · Split
| @@ -218,22 +218,30 @@ static int smsusb_start_streaming(struct smsusb_device_t *dev) · 217 unmodified lines | ||
| 218 | 218 | static int smsusb_sendrequest(void *context, void *buffer, size_t size) |
| 219 | 219 | { |
| 220 | 220 | struct smsusb_device_t *dev = (struct smsusb_device_t *) context; |
| 221 | − struct sms_msg_hdr *phdr = (struct sms_msg_hdr *) buffer; | |
| 222 | − int dummy; | |
| 221 | + struct sms_msg_hdr *phdr; | |
| 222 | + int dummy, ret; | |
| 223 | 223 | |
| 224 | 224 | if (dev->state != SMSUSB_ACTIVE) { |
| 225 | 225 | pr_debug("Device not active yet\n"); |
| 226 | 226 | return -ENOENT; |
| 227 | 227 | } |
| 228 | 228 | |
| 229 | + phdr = kmalloc(size, GFP_KERNEL); | |
| 230 | + if (!phdr) | |
| 231 | + return -ENOMEM; | |
| 232 | + memcpy(phdr, buffer, size); | |
| 233 | + | |
| 229 | 234 | pr_debug("sending %s(%d) size: %d\n", |
| 230 | 235 | smscore_translate_msg(phdr->msg_type), phdr->msg_type, |
| 231 | 236 | phdr->msg_length); |
| 232 | 237 | |
| 233 | 238 | smsendian_handle_tx_message((struct sms_msg_data *) phdr); |
| 234 | − smsendian_handle_message_header((struct sms_msg_hdr *)buffer); | |
| 235 | − return usb_bulk_msg(dev->udev, usb_sndbulkpipe(dev->udev, 2), | |
| 236 | − buffer, size, &dummy, 1000); | |
| 239 | + smsendian_handle_message_header((struct sms_msg_hdr *)phdr); | |
| 240 | + ret = usb_bulk_msg(dev->udev, usb_sndbulkpipe(dev->udev, 2), | |
| 241 | + phdr, size, &dummy, 1000); | |
| 242 | + | |
| 243 | + kfree(phdr); | |
| 244 | + return ret; | |
| 237 | 245 | } |
| 238 | 246 | |
| 239 | 247 | static char *smsusb1_fw_lkup[] = { |