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>
 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;
 
        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)