greybus: camera: fix memory leak in capture-request handler
authorJohan Hovold <johan@hovoldconsulting.com>
Wed, 30 Dec 2015 10:08:01 +0000 (11:08 +0100)
committerGreg Kroah-Hartman <gregkh@google.com>
Wed, 30 Dec 2015 21:16:06 +0000 (13:16 -0800)
Fix memory leak in capture-request handler by making sure to release the
operation request buffer after sending the request.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/camera.c

index 8b2eedd29cb3e6ca10fceba4ba82b211ee07f6a2..ec7d4a082ab18f1b8fb3bd1f7cbe1002bbd98b5a 100644 (file)
@@ -183,6 +183,7 @@ static int gb_camera_capture(struct gb_camera *gcam, u32 request_id,
 {
        struct gb_camera_capture_request *req;
        size_t req_size;
+       int ret;
 
        if (settings_size > GB_CAMERA_MAX_SETTINGS_SIZE)
                return -EINVAL;
@@ -198,8 +199,12 @@ static int gb_camera_capture(struct gb_camera *gcam, u32 request_id,
        req->num_frames = cpu_to_le16(num_frames);
        memcpy(req->settings, settings, settings_size);
 
-       return gb_operation_sync(gcam->connection, GB_CAMERA_TYPE_CAPTURE,
+       ret = gb_operation_sync(gcam->connection, GB_CAMERA_TYPE_CAPTURE,
                                 req, req_size, NULL, 0);
+
+       kfree(req);
+
+       return ret;
 }
 
 static int gb_camera_flush(struct gb_camera *gcam, u32 *request_id)