From nobody Wed Feb 11 08:36:05 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 DCEA15672 for ; Tue, 28 Jan 2025 23:54:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738108478; cv=none; b=Afm2Rgewcdo4wNKyKlHJTsIIESv1szxmt1C9a3kylZK80Yx4ZX+c1e2XqIy1r7Idc9cCpGfpptZN5tl1tkEzaC38jCQ+qw9F5wlHGjj7GFuhwWHcoIkxZxY/B+s7anRlqRmIIBfCVvsEfFgCdHkxxAWBt+LJr3GF0XOInzg5iUY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738108478; c=relaxed/simple; bh=KQIONmOEi/E9o3gH/thOyGIOBQgd/z39Y5qszZKIToQ=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=J/OQMVlzGVEYt+Jn7VRTceMtVP7aMB+uDNZl4ubPbg5Y9fhpJJRzfs/fMtDew9gN+Bcbo1ZT68lv22AsVDxFj2WKJsfHFjecb8PTI7gRnCYxXW37lUJd383YztF7cuv+5o9RfU5IOLbky6VKfShQyRHIcg8sYXM+5jCch3ABAro= 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=Q+MjV7yo; arc=none smtp.client-ip=209.85.128.45 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="Q+MjV7yo" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-436326dcb1cso42668645e9.0 for ; Tue, 28 Jan 2025 15:54:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738108475; x=1738713275; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=lfLQghIEMa81iynpw/i87X8Hd+p4i5ylHfkGCvLIXwk=; b=Q+MjV7yoVbd/I/jWrSbEKQNmPM5eus+jcIAMnFXuw4lLw1WOBVrmu0jErWPRW+yeCZ IkdlUj01Yi6PIaS77cQb0OKaE4Imkgl1yqSAcKccP/cMaYO7gHHQ3eOS0Knsqtn7Li7+ N+W5riTbseM7FdmQQAktqoxg3SD0uuXvydbCEtBB7t/TWaIRFv4LSqKIPlNSqTUWW1AZ Ru0dXek9GqOhsZyVVcSG8Pfer824r3cHXXkHhy0+ITnpVqbvjq72AGUwUcj57CB2xjka m7i6rHvcqm6zUAHEHedPHgaWn8AM04VWPhkA75ofBTzX76+ct6yyyLAmSmsxtcfMoMvE WlIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738108475; x=1738713275; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lfLQghIEMa81iynpw/i87X8Hd+p4i5ylHfkGCvLIXwk=; b=bCtqZy1R5PFF20A8dYvdMdogu4GPJfnfsXUPNV9j37pFdODaJkbe2iFSjhyGukU1X8 PLeKv6Y9VbbnsnRIafjtkJUQ0rv7pDnZgFyCcgL72s2NQ2kHgKaAaI5f51X1s9XUCBdN iIadWvWFO9vz83vLfkbYtNMWUjb1S9iYn+rKHb9sCKeX4aziz7JAckWOqZhPMtHM5N1C uGDxQg5fuSdXcYuKxhaba61y1DWnJPx+93vn2MylgA1IM+NV9j4rCMDMDMBN3ntGOioL O9myphQ2fqRNPMB2LczNSjwzQyMWr5W3kcB55mc+a6j73mH541K7Dw1+rFs0/9k1VBT+ NezA== X-Forwarded-Encrypted: i=1; AJvYcCWZ/7kM+CA6egZwF3mhPyMjn1GrNV0C+Av2FDtmWLbYvLH6MKeG2OAUAwiDLvHTxAkcQWeVMglWa5Jts0I=@vger.kernel.org X-Gm-Message-State: AOJu0Yzn2I6MXvKLQPiwr8p7FhjDdOUtePxGYOL+BPofW2AY1yOZtzcu fyO9CvC2RZF2CXEzxI6bj1m21JToQFk3AGV/YhdaKGrsuSqkKpZ+ X-Gm-Gg: ASbGncvYmVm2HeK1Ps3f+pGvnp42K/zl5u07P8JRFJ2h+hpCBpIt8UWqALoTBXzGoN+ Y13L6qHixc3mpvpMOxQZDPjTHaCySl1btYQNjvnTRSZ0dHgwvZPtRrl+W+JxOrDomZKloRxGgHD WUxC79Dt0cbDYPxPbkCSsQP5rHo+oRFOwx6HRa2mBv/nqjMmaR1r/dVmzzKkmiJwRcrY+pcxvON o/oERaYw38dJ5ZDALRgpjKzkBwJixzyG3OI2Z/IW65zmCrYw/YO7SqVwLOPKXiDgfuMcLZW1LrR qojK4IbuayoTUXk0 X-Google-Smtp-Source: AGHT+IETnlJuTTfqVMZyRCmZuvdViwOgi4XvzhhiPPeS+syrUPrtSla5X9OerMb25NBupoZv7Gj2aw== X-Received: by 2002:a05:600c:a44:b0:436:488f:50a with SMTP id 5b1f17b1804b1-438dc3c877cmr6772235e9.17.1738108474866; Tue, 28 Jan 2025 15:54:34 -0800 (PST) Received: from qasdev.Home ([2a02:c7c:6696:8300:9ffe:4023:cbe7:62eb]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438dcc26d05sm2906865e9.12.2025.01.28.15.54.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Jan 2025 15:54:34 -0800 (PST) From: Qasim Ijaz To: hughd@google.com, akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH] mm/shmem: Fix invalid PTR_ERR(NULL) call in shmem_xattr_handler_set() Date: Tue, 28 Jan 2025 23:54:08 +0000 Message-Id: <20250128235408.11229-1-qasdev00@gmail.com> X-Mailer: git-send-email 2.39.5 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In shmem_xattr_handler_set() if simple_xattr_set() succeeds and the pointer returned is not an error pointer, then old_xattr will be set to NULL in the body of the following if statement: if (!IS_ERR(old_xattr)) Later on shmem_xattr_handler_set() calls: return PTR_ERR(old_xattr); The PTR_ERR macro is used to extract an error code from an error pointer and NULL is not an error pointer, PTR_ERR(NULL) simply results in 0. To improve correctness and readability, refactor the error handling=20 to have an explicit default return value of 0 (success) in "ret".=20 If simple_xattr_set() returns an error pointer, store its=20 error code in "ret". Signed-off-by: Qasim Ijaz --- mm/shmem.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mm/shmem.c b/mm/shmem.c index 532afd8e049c..3e97c7890aac 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -4143,6 +4143,7 @@ static int shmem_xattr_handler_set(const struct xattr= _handler *handler, struct shmem_sb_info *sbinfo =3D SHMEM_SB(inode->i_sb); struct simple_xattr *old_xattr; size_t ispace =3D 0; + int ret =3D 0; =20 name =3D xattr_full_name(handler, name); if (value && sbinfo->max_inodes) { @@ -4158,7 +4156,9 @@ static int shmem_xattr_handler_set(const struct xattr= _handler *handler, } =20 old_xattr =3D simple_xattr_set(&info->xattrs, name, value, size, flags); - if (!IS_ERR(old_xattr)) { + if (IS_ERR(old_xattr)) { + ret =3D PTR_ERR(old_xattr); + } else { ispace =3D 0; if (old_xattr && sbinfo->max_inodes) ispace =3D simple_xattr_space(old_xattr->name, @@ -4168,12 +4171,13 @@ static int shmem_xattr_handler_set(const struct xat= tr_handler *handler, inode_set_ctime_current(inode); inode_inc_iversion(inode); } + if (ispace) { raw_spin_lock(&sbinfo->stat_lock); sbinfo->free_ispace +=3D ispace; raw_spin_unlock(&sbinfo->stat_lock); } - return PTR_ERR(old_xattr); + return ret; } =20 static const struct xattr_handler shmem_security_xattr_handler =3D { --=20 2.39.5