diff --git a/drivers/media/test-drivers/vidtv/vidtv_psi.c b/drivers/media/test-drivers/vidtv/vidtv_psi.c index 1b6225d65..7f38011ae 100644 --- a/drivers/media/test-drivers/vidtv/vidtv_psi.c +++ b/drivers/media/test-drivers/vidtv/vidtv_psi.c @@ -481,11 +481,11 @@ struct vidtv_psi_desc *vidtv_psi_desc_clone(struct vidtv_psi_desc *desc) default: curr = kmemdup(desc, sizeof(*desc) + desc->length, GFP_KERNEL); if (!curr) - return NULL; + goto free_head; } if (!curr) - return NULL; + goto free_head; curr->next = NULL; if (!head) @@ -498,6 +498,10 @@ struct vidtv_psi_desc *vidtv_psi_desc_clone(struct vidtv_psi_desc *desc) } return head; + +free_head: + vidtv_psi_desc_destroy(head); + return NULL; } void vidtv_psi_desc_destroy(struct vidtv_psi_desc *desc)