Received: by 2002:a05:7412:2a91:b0:fc:a2b0:25d7 with SMTP id u17csp442400rdh; Wed, 14 Feb 2024 01:13:55 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVUC1raDVbHOqT/DI972vJQLzFMAOE/W5LfZ6I/L/XKRA5ExG4EVy8KQ/zGIiCxouevTuxNkBrAweRCel3xOIu8lxn27u+b9/DLIEUW8g== X-Google-Smtp-Source: AGHT+IEL5E2AIJ/YQny3Q9FTj/oal/IyVF+C+tJ4dO/2YcxQES7VhEzQGzU5ekIwLYXF0dAGGXdi X-Received: by 2002:a05:6358:f485:b0:178:fb5d:46f6 with SMTP id ku5-20020a056358f48500b00178fb5d46f6mr1884223rwb.24.1707902035085; Wed, 14 Feb 2024 01:13:55 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1707902035; cv=pass; d=google.com; s=arc-20160816; b=mgNl+MqSw/SOs6lHEgw0k961Gt8h2NAJUOx313AQPyuT1FC91Vl93UX6Hv5KDcSn/t qANBnxloQHdmKcs5PPujwgnehOVjxiPYXOtsCbCkni3LTm3hUAdhcSI1sBAhutELU6c9 Uw+6ECSREBO2/+Vdw3zsJ3CKOzO9WIOAuj/N4eXNOz/sMx+ys3vnf4Az6lXimvq5Sno3 zzwzRBy0pwJDX8oXB+93dKdQEB+W6Oj1vADOoIt49cUUkELFIWsxHPslWpAzVGqy9r56 w1/MPFIWR17cd0ip7Fmn1Zn7Q8OgYAuSmsWt9Qyx/tV/bpLXHxKwm9Iz0IG9N311iUGL DVqQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id; bh=/lEBENC5ggZh8GBY/vLF0WK076Q93x8pjhn9K+RTSmU=; fh=jOWW9B0BdKkhxnsxdMcmHlmsw5uFgHVWymQpbFLfSOI=; b=TZAspnXJP7nPk1UMEwfZi2D9oDma8yProc8U6+B2h+sYoicHTlLm8o7PPm73TDhkTh sL/A5UbjnaAO0dpZp596dmIFaYH5KkG6Pq7n5z1sg6hprcannWjcPR//XYsR7fJmXrYy RhMim49OqSkjEg/WFIw9E/oL6HGwGVF77VgczxTPbUb4Cn1/GdjsrAEp7Ar2sL4c0TDx b8w6uTQShkRJ5/xWm0YXNygMAnjLoiUNTsGah60ZFJ0vsfCPw9djbTONJr7a0lsASPu+ M5TfYWFbfM/9e6KxJRXy3LHLDqEGkn75GqzxDSjuUxuSa42Vhdt4dm8T1X6Oowphsynt C9Hg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-64929-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-64929-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xs4all.nl X-Forwarded-Encrypted: i=2; AJvYcCX9xt+HPd0jWTKje1fbmHn3wX5/t+r1C2y9+A9II/NcEDZyl8Siudau7Yql852M3pj7DM6PUg43WDkdVdzGBzkmBiGDXCRysetIuVdP0Q== Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id c4-20020a056a00008400b006e04639e9c2si8068420pfj.330.2024.02.14.01.13.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Feb 2024 01:13:55 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-64929-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-64929-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-64929-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xs4all.nl Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id B2257284857 for ; Wed, 14 Feb 2024 09:13:54 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7E68D12B6A; Wed, 14 Feb 2024 09:13:15 +0000 (UTC) Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 032DE10A3B; Wed, 14 Feb 2024 09:13:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707901995; cv=none; b=nNCfR/N+v9WLvnPUbhbpU/JWxzI9KTQcfjUeWdyN+MTzO+koX+EhTx5gInrySEQEBw597yY4Rb7itdRtzRlnWVxZSsNIsbnlNOWfiLvfb26elZGU5k0bq4pMwQMdxFZXNO67Nd8Ij9y+kKl1r9hAMhQKhoEXxLLDpaLRgpoCnV8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707901995; c=relaxed/simple; bh=084PSz5mTHd1ymonazP+69h/HE55dDuaNCkpC8rH7Lc=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=q/Cr1/WJKih0PfUvYuwRMcuvTukaqZq2/4MIdYBznz3CQYDslf3HhKcjzgULPT6FdPMoqIJN+vV/gncAMUh3Vju+wW1rwjbkjegPO5bA6KLiVzj16wiErvhXh/ose9tS1o9kKJO19z0nBtNaj3iarFnMavkLRGZMGlOwM2+DvJ8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id B2A51C433F1; Wed, 14 Feb 2024 09:13:13 +0000 (UTC) Message-ID: Date: Wed, 14 Feb 2024 10:13:11 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] [v2] media: go7007: fix a memleak in go7007_load_encoder Content-Language: en-US, nl To: Zhipeng Lu Cc: Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org References: <20240206065008.3128493-1-alexious@zju.edu.cn> From: Hans Verkuil In-Reply-To: <20240206065008.3128493-1-alexious@zju.edu.cn> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 06/02/2024 07:50, Zhipeng Lu wrote: > In go7007_load_encoder, bounce(i.e. go->boot_fw), is allocated without > a deallocation thereafter. After the following call chain: > > saa7134_go7007_init > |-> go7007_boot_encoder > |-> go7007_load_encoder > |-> kfree(go) > > go is freed and thus bounce is leaked. > > Fixes: 95ef39403f89 ("[media] go7007: remember boot firmware") > Signed-off-by: Zhipeng Lu > --- > Changelog: > > v2: free go->boot_fw instead of bounce > > P.S. I'm sincerely apologize for sending a wrong v2 patch with no > change applied. I forgot to add the changes to commit and missing > it when checking. Please use this patch as the version 2. > --- > drivers/media/usb/go7007/go7007-driver.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/media/usb/go7007/go7007-driver.c b/drivers/media/usb/go7007/go7007-driver.c > index 0c24e2984304..c0a47e596339 100644 > --- a/drivers/media/usb/go7007/go7007-driver.c > +++ b/drivers/media/usb/go7007/go7007-driver.c > @@ -80,7 +80,7 @@ static int go7007_load_encoder(struct go7007 *go) > const struct firmware *fw_entry; > char fw_name[] = "go7007/go7007fw.bin"; > void *bounce; > - int fw_len, rv = 0; > + int fw_len; > u16 intr_val, intr_data; > > if (go->boot_fw == NULL) { > @@ -109,9 +109,10 @@ static int go7007_load_encoder(struct go7007 *go) > go7007_read_interrupt(go, &intr_val, &intr_data) < 0 || > (intr_val & ~0x1) != 0x5a5a) { > v4l2_err(go, "error transferring firmware\n"); > - rv = -1; > + kfree(go->boot_fw); I think it is best if you add this line here: go->boot_fw = NULL; It makes the code more robust in case go7007_load_encoder() is called again. Regards, Hans > + return -1; > } > - return rv; > + return 0; > } > > MODULE_FIRMWARE("go7007/go7007fw.bin");