diff options
author | Tom Rix <trix@redhat.com> | 2022-03-12 18:30:49 +0100 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@kernel.org> | 2022-05-13 11:02:20 +0200 |
commit | 6d644a6300912730e316874911e6e51ee636ec53 (patch) | |
tree | 76ab317f750983f0a1d24da93a79d7f67697506d /drivers/media/usb | |
parent | media: coda: limit frame interval enumeration to supported encoder frame sizes (diff) | |
download | linux-6d644a6300912730e316874911e6e51ee636ec53.tar.xz linux-6d644a6300912730e316874911e6e51ee636ec53.zip |
media: stkwebcam: move stk_camera_read_reg() scratch buffer to struct stk_camera
In stk_camera_read_reg() a single byte buffer is alloc-ed and
freed on every function call. Since the size is known,
move the buffer to the struct stk_camera where it will be alloc-ed
and freed once.
Signed-off-by: Tom Rix <trix@redhat.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Diffstat (limited to 'drivers/media/usb')
-rw-r--r-- | drivers/media/usb/stkwebcam/stk-webcam.c | 11 | ||||
-rw-r--r-- | drivers/media/usb/stkwebcam/stk-webcam.h | 2 |
2 files changed, 4 insertions, 9 deletions
diff --git a/drivers/media/usb/stkwebcam/stk-webcam.c b/drivers/media/usb/stkwebcam/stk-webcam.c index 5b822214ccc5..787edb3d47c2 100644 --- a/drivers/media/usb/stkwebcam/stk-webcam.c +++ b/drivers/media/usb/stkwebcam/stk-webcam.c @@ -150,25 +150,18 @@ int stk_camera_write_reg(struct stk_camera *dev, u16 index, u8 value) int stk_camera_read_reg(struct stk_camera *dev, u16 index, u8 *value) { struct usb_device *udev = dev->udev; - unsigned char *buf; int ret; - buf = kmalloc(sizeof(u8), GFP_KERNEL); - if (!buf) - return -ENOMEM; - ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x00, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 0x00, index, - buf, + &dev->read_reg_scratch, sizeof(u8), 500); if (ret >= 0) - *value = *buf; - - kfree(buf); + *value = dev->read_reg_scratch; if (ret < 0) return ret; diff --git a/drivers/media/usb/stkwebcam/stk-webcam.h b/drivers/media/usb/stkwebcam/stk-webcam.h index 14519e5308b1..136decffe9ce 100644 --- a/drivers/media/usb/stkwebcam/stk-webcam.h +++ b/drivers/media/usb/stkwebcam/stk-webcam.h @@ -105,6 +105,8 @@ struct stk_camera { struct list_head sio_avail; struct list_head sio_full; unsigned sequence; + + u8 read_reg_scratch; }; #define vdev_to_camera(d) container_of(d, struct stk_camera, vdev) |