From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 19B3C2D94A9 for ; Mon, 29 Dec 2025 12:19:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767010767; cv=none; b=ELAbFO0A3KljDlo9ro6tSH9xhM9JpksQKU8zeC0VF/CgMMHD5jafwk+b4aNfxyqBak/MIwL+sMd5uFfYKBQrjPer/eMNRy8e0awLyHYTSx8xFM9JFkDru+icbNhXkNpBw7QEIbswKME3sVc6vQGP6W5w+08cSxug0Whi7q0U2tc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767010767; c=relaxed/simple; bh=Nr1+kBqdQGYzaZN/S35VQ41MqbWDAxfYegrFFSEPFfM=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=SnLOsoB9O2osnQi9+ieh+BVQkizLsP1x66TrUUIKhP6XqB8+IjZCEJSxYHwrPrN9ipPFPQO6y/Npl/2DZMU3iAXfNPPJKQ/ES8QGVqbCBxVq+UtSeWwUDvpjZ37HIFjGgD9sFSNg4IaCwiLgvGBBbBT8foosJ82b9JKrYcwS07M= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=LTk5s45E; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="LTk5s45E" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-43260a5a096so4232262f8f.0 for ; Mon, 29 Dec 2025 04:19:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767010764; x=1767615564; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=ldijQ6zYMdoPjET5HWM9sFcCMGA11dILMQxZccbfHK8=; b=LTk5s45EGD23wWX9CBQyt8zuo1PmqmJJHavKDRCi3uf393SwNFDC3hDMl39CvayJl9 ofHTPwtPbImKNcQ5TH0AuCQEePFLNo0+pxawRfI3NCpLxsOb4DjBfotyMee59Rm5AZNV ZdtufybnDdWqLGXINuUn6xqM+N/RlK7dnGI0hC/RLzl0cvx+X3rcIFC4o/Ss2g9VzWFv MD6YpRRCpgugyIX4lM+QVhzhOUe25jbvoze3qDNa/P3obsLJs9E22pANaxgrMnqL99NI O94nUaojj+a4+bVNisobnuQAHNZcIMMVv5ZQkyK3DpOfWaRXvRQV5kR9sFi70933Cg8s 8PPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767010764; x=1767615564; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ldijQ6zYMdoPjET5HWM9sFcCMGA11dILMQxZccbfHK8=; b=Plhaw1n75ref7qKSMpdRNt4nGPx8QIaLZi1IfrYYP15ClpwGE38lHy0ovTzVjzWBv5 IQBM3dm72lBDoqMBG/U6JZdIzjDc8/3/hCx/fDt+2H3DpOMV8pzCdTZuVDk45N5kLpEM E1CrVBTyBX+yj2MG2wZTh9Fun+24VI4oEa1RigTaXTE0GcqAJs74w0cIq+PDFvXPKY/9 SkqL9omPSXq3+eCCPndJfL2eLWSnte+LmSt/2PyddnugKsD0adOJ+hOkGTfIK4Xz5X9n MuvytPwbQsIeJ0mB8OQMnOJHWbgHmCeZ0nBR+eoZ5wMiRYFqm6nbPRBtoRyHFiq7pyDb Mobg== X-Forwarded-Encrypted: i=1; AJvYcCUzJZWtmCo0yDvpFbfipr97aJe8OJ2JHdmN0sbfzX6Pqnx5v2HlZeOxs+Wc3YYL5FW4NUNhc1g4t8AhJuU=@vger.kernel.org X-Gm-Message-State: AOJu0Yz0cYoh+iX0Pf5WUHu9lkMZZ+7RGVYZKp3DGnVID735RWYz+l9/ 8MdcF08I5BsLttu3jAaIzz3da7Blesw1pdARR8sVHOO6NmtTW/I9u9bS X-Gm-Gg: AY/fxX40QvB3ZAqNtVvCeobjPPtuIYPuklojIOYsy654NdmVvOaxX8oS5JI1uxETqB1 XZ0s5L/jBWkHKDwXHunqey5h29aLQjmc6zVbjpCk1HY6yrhXkPfqJ15dqVFzfg4k/rUqVdcwS56 yYosus4jSFqgLOCF/0SLD3a3mT9YIyk/zMm5Ws6xpI1VJdVpJHz9vCYsf9cMIVo/rCzl6lPaz/F QbdCvXsJhPYZH7FRQVR540Mf/IhTpwonvuQaSSLtBjQ6VP2zHex9Fd8udyGAkrttqoFIFbzYYIl /5ycgewJvGHAu67Bgz+boizUFqDEPRmsl4c9Mw/n8hCwRYme+4b+wK6Dq/RY36mRejLgqJuvOoK WqdUKehZL2ycO4uExL+nC85kmysBilQ/PujSPI0+5jujQ8KPWgz9q6cuuhE/X9lcH5Zh5Y4wfa/ A/oes= X-Google-Smtp-Source: AGHT+IHXF8jDbxSCLIQcnZa7cHiEcPbYmOdrCeXg76UrRIFAHhjYfe4OVv28jlhYlieRtDtKaq1byQ== X-Received: by 2002:a05:6000:220b:b0:427:23a:c339 with SMTP id ffacd0b85a97d-4324e4cb7d7mr36493167f8f.14.1767010764170; Mon, 29 Dec 2025 04:19:24 -0800 (PST) Received: from egonzo ([2a01:e0a:9ad:d3b0:ec4c:9f30:1dfe:440a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea2253csm62604958f8f.14.2025.12.29.04.19.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 04:19:23 -0800 (PST) Date: Mon, 29 Dec 2025 13:19:22 +0100 From: Dave Penkler To: Zilin Guan Cc: gregkh@linuxfoundation.org, matchstick@neverthere.org, mingo@kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org, jianhao.xu@seu.edu.cn Subject: Re: [PATCH] staging: gpib: Fix memory leak in ni_usb_init() Message-ID: References: <20251228081926.3503643-1-zilin@seu.edu.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20251228081926.3503643-1-zilin@seu.edu.cn> On Sun, Dec 28, 2025 at 08:19:26AM +0000, Zilin Guan wrote: > In ni_usb_init(), if ni_usb_setup_init() fails, the function returns > immediately without freeing the allocated memory for writes, leading > to a memory leak. > > Fix this by jumping to the out label to ensure the memory is properly > freed. > > Fixes: 4e127de14fa7 ("staging: gpib: Add National Instruments USB GPIB driver") > Co-developed-by: Jianhao Xu > Signed-off-by: Jianhao Xu > Signed-off-by: Zilin Guan > --- > drivers/gpib/ni_usb/ni_usb_gpib.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpib/ni_usb/ni_usb_gpib.c b/drivers/gpib/ni_usb/ni_usb_gpib.c > index 1f8412de9fa3..4cf45e94c750 100644 > --- a/drivers/gpib/ni_usb/ni_usb_gpib.c > +++ b/drivers/gpib/ni_usb/ni_usb_gpib.c > @@ -1802,7 +1802,7 @@ static int ni_usb_init(struct gpib_board *board) > if (writes_len) > retval = ni_usb_write_registers(ni_priv, writes, writes_len, &ibsta); > else > - return -EFAULT; > + goto out; > kfree(writes); > if (retval) { > dev_err(&usb_dev->dev, "register write failed, retval=%i\n", retval); > @@ -1810,6 +1810,10 @@ static int ni_usb_init(struct gpib_board *board) > } > ni_usb_soft_update_status(board, ibsta, 0); > return 0; > + > +out: > + kfree(writes); > + return -EFAULT; > } > > static void ni_usb_interrupt_complete(struct urb *urb) Good catch. Prefer simpler variant with check for failure first: if (!writes_len) { kfree(writes); return -EFAULT; } retval = ni_usb_write_registers(ni_priv, writes, writes_len, &ibsta); kfree(writes); if (retval) { ... cheers, -Dave > -- > 2.34.1 >