/* USB control message buffer */
        #define BUF_SIZE 128
-       u8 buf[BUF_SIZE];
+       u8 *buf;
 
        /* Current configuration */
        unsigned int f_adc;
 
        v4l2_ctrl_handler_free(&s->hdl);
        v4l2_device_unregister(&s->v4l2_dev);
+       kfree(s->buf);
        kfree(s);
 }
 
 {
        struct airspy *s;
        int ret;
-       u8 u8tmp, buf[BUF_SIZE];
+       u8 u8tmp, *buf;
+
+       buf = NULL;
+       ret = -ENOMEM;
 
        s = kzalloc(sizeof(struct airspy), GFP_KERNEL);
        if (s == NULL) {
                return -ENOMEM;
        }
 
+       s->buf = kzalloc(BUF_SIZE, GFP_KERNEL);
+       if (!s->buf)
+               goto err_free_mem;
+       buf = kzalloc(BUF_SIZE, GFP_KERNEL);
+       if (!buf)
+               goto err_free_mem;
+
        mutex_init(&s->v4l2_lock);
        mutex_init(&s->vb_queue_lock);
        spin_lock_init(&s->queued_bufs_lock);
        v4l2_ctrl_handler_free(&s->hdl);
        v4l2_device_unregister(&s->v4l2_dev);
 err_free_mem:
+       kfree(buf);
+       kfree(s->buf);
        kfree(s);
        return ret;
 }