From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (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 F311D1548C for ; Fri, 14 Nov 2025 18:41:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763145715; cv=none; b=UPW3q5lLBLgOOSeISLIfv+YtOd2U4RTE8CfJej0rzXo/x2UBO5eBQw15gpDJpRgRBxxH9Qpy1MRHdCpwbg6a/So4AV5WMZSr3IE82JmHSxHruY6RlF+cPaASKo0qkpRv90meAlGkHOeIOv7JhnQw8zWOZRY2+ouV7NmtSuvI5lc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763145715; c=relaxed/simple; bh=5N3fBcB9F7KtiyYydU2NB/FUnIDR9KOPEvXoCN+HTws=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version:Content-Type; b=bq3o6x28vXQAgdKWl3MzbsyM0nNle6JPp224BsfHOcEJZtCgpsB8kElAQ5FsjBXtDY7XVss/qPc1wD0s9vDoYExfALr9Te/QvgDqgZC3Ib6V5BEm34dr6j2+/5AK5LJKEi9vfSB+rq/UvNZDpUUJLEconvSIiF3IYpq7QQOGJE4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=4oUrj2OF; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=Ywr5YnDt; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="4oUrj2OF"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="Ywr5YnDt" From: Thomas Gleixner DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1763145708; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=SLzwHvac72d6UOWyeW8WC5u+OV8DS5YxK51Tl5JQtUE=; b=4oUrj2OFTN/I8eEzgvgxr06xKPblECglTVx3c3EQOjn2CTdUq80ZqxZnX8vOXHnfllQbCT HC4Vkd1GsheSrjv+OYwLTPXuSZ9RBxEZJSpOcQfAO67VC1MOPDw89H0LPcvyIeyuUE42Ay VwVzCY0nPQrJR6+KOV8qlG/M7jjNfL3i7RljKNdT8rJzn0Na5rvbreu5zSLvzusGRGE9gR QswXjOEWmOvCbxe8/0Q+E/JbD6Z3mdifGBgeecthr0N3tCQIl9qXdbKCJkx1Z3eiClW15H RU8pw0hRHHw+VuNze7pFqeb+yqF4EA957tXi3u5etEuaHFtnIfIxyQ7lKNTxfQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1763145708; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=SLzwHvac72d6UOWyeW8WC5u+OV8DS5YxK51Tl5JQtUE=; b=Ywr5YnDtg2d7dtD40vEgZ3fJfJWIAI4mrxavUSdc16WSeC3i3dnxJni2J+mJADilAbW/hb VXgyjZ655qc6udAQ== To: Malaya Kumar Rout , linux-kernel@vger.kernel.org Cc: mrout@redhat.com, lyude@redhat.com, malayarout91@gmail.com, John Stultz , Stephen Boyd Subject: Re: [PATCH] timekeeping: Fix resource leak in tk_aux_sysfs_init() error paths In-Reply-To: <20251110070054.9090-1-mrout@redhat.com> References: <20251110070054.9090-1-mrout@redhat.com> Date: Fri, 14 Nov 2025 19:41:47 +0100 Message-ID: <87ldk8bgno.ffs@tglx> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain On Mon, Nov 10 2025 at 12:30, Malaya Kumar Rout wrote: > @@ -3060,29 +3060,37 @@ static const struct attribute_group aux_clock_enable_attr_group = { > static int __init tk_aux_sysfs_init(void) > { > struct kobject *auxo, *tko = kobject_create_and_add("time", kernel_kobj); > + int ret; > > if (!tko) > return -ENOMEM; > > auxo = kobject_create_and_add("aux_clocks", tko); > if (!auxo) { > - kobject_put(tko); > - return -ENOMEM; > + ret = -ENOMEM; > + goto err_put_tko; This ret variable is completely pointless as it is set to -ENOMEM in every error path. Just make the error path do 'return -ENOMEM;', no? > } > > for (int i = 0; i < MAX_AUX_CLOCKS; i++) { > char id[2] = { [0] = '0' + i, }; > struct kobject *clk = kobject_create_and_add(id, auxo); > > - if (!clk) > - return -ENOMEM; > - > - int ret = sysfs_create_group(clk, &aux_clock_enable_attr_group); > + if (!clk) { > + ret = -ENOMEM; > + goto err_put_auxo; > + } > > + ret = sysfs_create_group(clk, &aux_clock_enable_attr_group); > if (ret) > - return ret; > + goto err_put_auxo; > } > return 0; > + > +err_put_auxo: > + kobject_put(auxo); > +err_put_tko: > + kobject_put(tko); > + return ret; You can simplify that with _one_ error label: err: kobject_put(auxo); kobject_put(tko); return -ENOMEM; because kobject_put() is NULL pointer safe. Thanks, tglx