From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.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 710E136212D for ; Tue, 20 Jan 2026 11:48:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768909725; cv=none; b=IK+WeXtqp7eRXyEwC1kpWtAMO5gMXzCOe0iMYleEZTJCDkS4dPDN1OPiIVwnCFOBHLbRF7EXA+o/WMXy8XJvLwWNYwhYZXfVSmnglIiyM2tV2LHc0FSutzZC8ye9ho9KHLQxE3OS4Rswxk3r/qPpRDEtvP9WQYHdSvulUV/FZ+I= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768909725; c=relaxed/simple; bh=z8U+lJYE1o1U8ALp7wOUkWjnAumVkWSMg9vRKqEnNuw=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=KT6zTZ4RfTqDXpc80vRQF9lm0qST7/N8D91mJFb9+4x/QDdgKSyRQNhuGi/CbMgJ5wkjR5fMnRaI8EY1ThO+hLj8L5DSi6NPLO/t//cWOaEms6Qmram2i4ERQ0yG8CV3lcpkzBLdlJosvZsVC3NRVsp2UPKee+3SHEdRjBDBNMw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=EuT7mMFs; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="EuT7mMFs" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-47edd9024b1so32999925e9.3 for ; Tue, 20 Jan 2026 03:48:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1768909722; x=1769514522; 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=lMNds2sA+KRYmB/Rzml78vupwaOkPM/L1yIOEx0pwNI=; b=EuT7mMFsZPVO70z3c2o4gjSm5TfEGuwjD/dPLDPsKoO2cLznJYhj4xA5QTt8OIcVH1 czKR1q+UhuPvouakBlo9xc4kO0QIEMjgFJO6TK/p55Ccq5ggVypWmfum0qVtY317P3pJ cbcm4VqjiPPe6Wn7sQgIpbMk/KK+7/JTp+Klrmdgm0fqgLeHM2Ia1GGe6efuzPJeNZHK mbiEwFPznUfKyTVct3QTbA6STqxfPZalpys/tsNWpvnG/q9fZOy4Cs563jcGdNqcQfXg 2PJfXs7nMTgLPWqLPNZ0doFpq0bgMt3/lx4eo2EHHIJLIbnNVenKeP4pkTQybfGsSDhl ITng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768909722; x=1769514522; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lMNds2sA+KRYmB/Rzml78vupwaOkPM/L1yIOEx0pwNI=; b=ED6D23rb8F2FI3pTpdHTWoCvl0vAOR8+ARiHqtGwLGQVVv+FzDFd4dDyaWBFV4pXY4 e2/fS9XRMICZbahB1dCgECzjHJX3gRuVilpjY8gO94UypDouCEUzsn39cGp2td/g+kGe HTs2haLeBT6ZkyH0zh1fTrnWJJfzEC4AB7FBhIzFf1DGfORPGUqo8wqhmNvDS+Y8KXAU O2kRbi30Qtb2GcpsneJvLXpdKNIBhmaOZ8uuULBfbFPQt7AyuOmW3VeJnrxbs3DF4TqN IexqNdm9txHUpaceGpwXEYUR82gq/Fhxgx6jYSF/LHg8Lg9xBZr7jaMPAZpzc4+Qmco5 KRNA== X-Forwarded-Encrypted: i=1; AJvYcCWYBqg2dS701ae0YIasgJYuwuiI8Mdl96epVDoIbbYsYkv2KvaGl1Ah3FuA9SIbMrOFlDkv7V9mal3xupg=@vger.kernel.org X-Gm-Message-State: AOJu0YyQybQLXzjl097XsSqRBkhdZ08cIp0ozPC9R/OGjXfDU9d8fwz2 nFG1IE/ydEOQeI5PVb6oJM03zIVpEjEA7D54N0IJS4pOtUbqoW8NMMBYz4fRGg+avpU= X-Gm-Gg: AY/fxX6tiJICVTMb4uA1otSYLUIWkNzg+2cwZtRRtlM5EJ/3WfjRuSbXJda6nVIm/UV dQ9RwO/6bVpbdEvuPbrFrvhM1wG0Q72q8WBmvnxiqvY+UlUm0xKPH+qqY4BJ9wnNZ1Qr5uQeW+p dig5F29YvJdKJdSk/HK1YvV7Bccnx73Ypvajc47r/sVtln4BKN8yof8yawN5RNqq8S3u3j8PrEw I+gBzRqF+0+vOaJyrdH3mX8NJn2uoH9mGoMYI4ZLR5fOIKyj39zs7BgjHZh2lrVj+1ScIA7kIpM vDjO9PxaUkfHRPnUJp0GR2/gubFkC5kInF4JAo2ScxzvQ91JuW4avUKtWOwGYZJMhM/UNxPKIXy K8KBxhn8IF8IS499oz8RtTne1IUxkzJENR2sfgQILOcsAWMumCsXhV/qvp229gDEmGRB0vqGKsM hNZb2vwK1gP5hynUL7Q3tiGi+BNk00dw== X-Received: by 2002:a05:600c:4448:b0:47e:e2b0:15ba with SMTP id 5b1f17b1804b1-4801eab9ed9mr181075465e9.8.1768909721755; Tue, 20 Jan 2026 03:48:41 -0800 (PST) Received: from [10.0.1.22] (109-81-1-107.rct.o2.cz. [109.81.1.107]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4802dc90068sm183763625e9.7.2026.01.20.03.48.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 20 Jan 2026 03:48:41 -0800 (PST) Message-ID: Date: Tue, 20 Jan 2026 12:48:40 +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] genksyms: fix file pointer leaks on error paths To: Weigang He Cc: masahiroy@kernel.org, sam@ravnborg.org, linux-kernel@vger.kernel.org References: <20260117102602.534734-1-geoffreyhe2@gmail.com> Content-Language: en-US From: Petr Pavlu In-Reply-To: <20260117102602.534734-1-geoffreyhe2@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 1/17/26 11:26 AM, Weigang He wrote: > The option parsing loop processes multiple command-line options > sequentially. When -r or -T options successfully open their files, > but a later option causes an early return (e.g., -h for help, an > unknown option, or a failed fopen), the previously opened file > pointers are leaked. > > Fix this by closing ref_file and dumpfile before each early return > in the option parsing switch statement. > > Fixes: 64e6c1e12372 ("genksyms: track symbol checksum changes") > Signed-off-by: Weigang He > --- > scripts/genksyms/genksyms.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/scripts/genksyms/genksyms.c b/scripts/genksyms/genksyms.c > index 83e48670c2fcf..dee9216797935 100644 > --- a/scripts/genksyms/genksyms.c > +++ b/scripts/genksyms/genksyms.c > @@ -776,6 +776,8 @@ int main(int argc, char **argv) > ref_file = fopen(optarg, "r"); > if (!ref_file) { > perror(optarg); > + if (dumpfile) > + fclose(dumpfile); > return 1; > } > break; > @@ -784,6 +786,8 @@ int main(int argc, char **argv) > dumpfile = fopen(optarg, "w"); > if (!dumpfile) { > perror(optarg); > + if (ref_file) > + fclose(ref_file); > return 1; > } > break; > @@ -792,9 +796,17 @@ int main(int argc, char **argv) > break; > case 'h': > genksyms_usage(); > + if (ref_file) > + fclose(ref_file); > + if (dumpfile) > + fclose(dumpfile); > return 0; > default: > genksyms_usage(); > + if (ref_file) > + fclose(ref_file); > + if (dumpfile) > + fclose(dumpfile); > return 1; > } > { Genksyms is a utility used exclusively during the kernel and module build process. My understanding is that it is designed to exit immediately upon encountering an error and leaves the cleanup of memory and open files to the kernel. Notice the use of xmalloc(), xstrdup() and exit(1). This is intentional to keep the code simple. -- Cheers, Petr