From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-io1-f49.google.com (mail-io1-f49.google.com [209.85.166.49]) (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 AE0032AF07 for ; Thu, 9 Jan 2025 03:06:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736391982; cv=none; b=f9IkGAo7puNBePmNZK9T/nJMi/fZamxyv0BFja/ae8gLJtFWPZASWV4xnjJ+lPrug/tdq43PVDtlTUkgN1IoUX24u0Wnj1/jfa+x31wCurSrZwYXwcytVM4b7xMrpB2YMw0wP8+PRLF2LXIA9iVFRRRzjZPHmoW+CCerNRC1KeE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736391982; c=relaxed/simple; bh=6E44TC/WeLohaV/GG3/+2us5iJI0msB4IR+W0wVCTc8=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=VdSUj/7chFT4VOI4fc4Os74qGQRmDpcsCTmTRNNkpOuCcwfIKqvkYDj5feCw70/FjhBRDm4NJbNmLqaBMjmRqgf2LIJQLUm7BDpEm8wbXLjGQ0iMmNjGO+GV4TwZyFmr8ndBBH7DPDLXbYWct5lH+rDN2UwbV6ABNFT9HHabpUE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ieee.org; spf=pass smtp.mailfrom=ieee.org; dkim=pass (1024-bit key) header.d=ieee.org header.i=@ieee.org header.b=Pi5ggEas; arc=none smtp.client-ip=209.85.166.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ieee.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ieee.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ieee.org header.i=@ieee.org header.b="Pi5ggEas" Received: by mail-io1-f49.google.com with SMTP id ca18e2360f4ac-844ee43460aso30793639f.1 for ; Wed, 08 Jan 2025 19:06:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ieee.org; s=google; t=1736391980; x=1736996780; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=uTUZvAfC3HuCxdGqCAQ+0ClPvsf5FRg9P5yGUQG8KrA=; b=Pi5ggEasgOUK1cgUG0N42b9cHeWmrZ31hdGPO3RVjLkD+6N7hBiFghp9hyywR6oHE2 5BgVITy4K5Hb4eXSOlnHNolTH3RRMo9Qi2gxd8EgtdBLLbZiVkTbrz55ch17GK+YOsQb e3LcvjylRTooNkp9zKDQgtdIKqHlaFEjEMpwU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736391980; x=1736996780; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=uTUZvAfC3HuCxdGqCAQ+0ClPvsf5FRg9P5yGUQG8KrA=; b=d1kn5/p75fT+wdip2AhYfpCdEgSs4V1OsPJdXfwvS5bPvPpn4Ayx+ZjlEQBay6GHqV vYqUaF/c0bozVszBi4SE2BdC3oP5E0/U0al7UIxn9Ru3/D9VtP9YkdPXZdSX/q4T9c8E SqIEkNEyjki641K1fdxZUHpkHLU3eAEKkPxqCvzI4hyDc68Ii65zr9VTNsAbDPTNeMGj 2k/zdL3cwPZE8lBHcImZAx1Cc52E2Yf6E96tpqE+0qkDHSg0Pmk/DPWBNW5XVUJ3VV3f ManMhDN1GrwJC4QPKIPALE35LT08aCoyWYiJ8KZ2+I1JQfR/w6PNuCzoBkatdbAnUI6E 2Vsw== X-Forwarded-Encrypted: i=1; AJvYcCV0GN1l6VpaTd5VS+RjT2cjkIw9GbAIPfZhkeqYEr/OKu4SGTI+7Pczauk7/0gT+KnYi7wOhfDPXGY/c7c=@vger.kernel.org X-Gm-Message-State: AOJu0Yxa98WBk0zvjgmyRbcreA6mVRM44v7C9AEgTapJ7Nv37uGk3ofb B09nShAHtRmGHWGInbgGZWLiT07/Q7UrBMDsFOWrQl3ec4XdCTgX9t7AjmQn0Q== X-Gm-Gg: ASbGncvMgvvj0raO2+nARi4ey8p3/VUP6a/BSRbDp7LBKm7ojKZIzHfrzyDfZU/X9gh CYvkcLQDcMnbnR2jlctBzrNe84G9+cWnk1MEQFk2YZ2UMoKWGktDGjhEx2RNOmNd0DiLs3zhXSt S7w8BQSFE+TTqu7WB3jZh7S9DVa8AKU2eXnlcoNsZ4hK7jOWABc3zfpkNXZlqjMMAnMQqmSgejx 3gL+M94H1Cjyr0ix4DK3ihmcNPW/L2ZopAyxuOlhOZq+HMO3a9HWlE2TEZdeDbD/WBvYSqebQ4q 052Roia7OgAlzS/KtX1OpvP8 X-Google-Smtp-Source: AGHT+IHDD0mFIm+x2FLllMlTBSOrRH1d0iM6GMX0L6u7f+zIeXK21APePMyl/UJrekX3J3HBVwuUUw== X-Received: by 2002:a05:6e02:1f09:b0:3a7:e0c0:5f27 with SMTP id e9e14a558f8ab-3ce3a86a220mr41193365ab.2.1736391979775; Wed, 08 Jan 2025 19:06:19 -0800 (PST) Received: from [10.211.55.5] (c-73-228-159-35.hsd1.mn.comcast.net. [73.228.159.35]) by smtp.googlemail.com with ESMTPSA id e9e14a558f8ab-3ce4adbbdaesm1202825ab.29.2025.01.08.19.06.17 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 08 Jan 2025 19:06:18 -0800 (PST) Message-ID: <229506bf-e675-4f17-b1fa-f9f7d62fcd45@ieee.org> Date: Wed, 8 Jan 2025 21:06:16 -0600 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 v4] [ARM] fix reference leak in locomo_init_one_child() To: Ma Ke , linux@armlinux.org.uk, sumit.garg@linaro.org, gregkh@linuxfoundation.org, elder@kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org References: <20250108033049.1206055-1-make24@iscas.ac.cn> Content-Language: en-US From: Alex Elder In-Reply-To: <20250108033049.1206055-1-make24@iscas.ac.cn> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 1/7/25 9:30 PM, Ma Ke wrote: > Once device_register() failed, we should call put_device() to > decrement reference count for cleanup. Or it could cause memory leak. > > device_register() includes device_add(). As comment of device_add() > says, 'if device_add() succeeds, you should call device_del() when you > want to get rid of it. If device_add() has not succeeded, use only > put_device() to drop the reference count'. And above device_register() it says: * NOTE: _Never_ directly free @dev after calling this function, even * if it returned an error! Always use put_device() to give up the * reference initialized in this function instead. > Found by code review. > > Cc: stable@vger.kernel.org > Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") > Signed-off-by: Ma Ke Looks good to me. Much cleaner result. Reviewed-by: Alex Elder > --- > Changes in v4: > - deleted the redundant initialization; > Changes in v3: > - modified the patch as suggestions; > Changes in v2: > - modified the patch as suggestions. > --- > arch/arm/common/locomo.c | 13 +++++-------- > 1 file changed, 5 insertions(+), 8 deletions(-) > > diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c > index cb6ef449b987..45106066a17f 100644 > --- a/arch/arm/common/locomo.c > +++ b/arch/arm/common/locomo.c > @@ -223,10 +223,8 @@ locomo_init_one_child(struct locomo *lchip, struct locomo_dev_info *info) > int ret; > > dev = kzalloc(sizeof(struct locomo_dev), GFP_KERNEL); > - if (!dev) { > - ret = -ENOMEM; > - goto out; > - } > + if (!dev) > + return -ENOMEM; > > /* > * If the parent device has a DMA mask associated with it, > @@ -254,10 +252,9 @@ locomo_init_one_child(struct locomo *lchip, struct locomo_dev_info *info) > NO_IRQ : lchip->irq_base + info->irq[0]; > > ret = device_register(&dev->dev); > - if (ret) { > - out: > - kfree(dev); > - } > + if (ret) > + put_device(&dev->dev); > + > return ret; > } >