From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (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 0A1713C278A for ; Wed, 20 May 2026 22:41:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779316923; cv=none; b=VyviV0kFNUuPiWFP68K5TTDnEupxFODbgJwbPqSJ9yNXJdYYW3uaYfwjluYV+rAjUeYgMRHFsv2x0usqPzH/BHPJxaO2+C/Fl1ATB+uHLDXKuzaj9RukH1/X+u4EBBuCpIKS5u0CTUyDSZThnugpCloXEOb85kM++I2pLUGMvKo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779316923; c=relaxed/simple; bh=Ib1G1HvJbNyRcWO81HjPhfTyiddnCm9YVoxujVd1HP8=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=GPIuQy4GExXJ/a1kPj0qe5EZ1bmmEqG2oLIRpV92Ks5TzGEILDO5XrVn4OgHT6x99eMehHx1+P79JIYlEb2AN4VH+KKJnEcLPxa+uf2rg+PP8zLXguM8uU+Wae1LfW/0w8C4rjm7uiApIcgNd35pzepZ6+k2942ObqhciHrkq2c= 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=TeDchu2p; arc=none smtp.client-ip=209.85.221.52 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="TeDchu2p" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-43eb05b1875so3033393f8f.3 for ; Wed, 20 May 2026 15:41:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779316915; x=1779921715; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=BGD0/pwTecIM3ffPJGuJWN0Obb0PAJ/eWot9laPpF0c=; b=TeDchu2pzTkH6hWiKJKZQi6Iqxz+oD3Vx5Ay6LA7gBc9ybziLNGzVN5Gr/+depeJqQ GM9UcqoQoRhP+9IHuXkBNbwnryrjxJ1BmPlcN/PskN08BSfqIrRzvg9w6+b412CpOz0U IpBKKTvjnDc2HrK+ykUCuPlNJezOtUaZ/TNongBb+uvs1GtIBxuOrveo7+slyIH5JX0l 42ACQqC1fEWFoNZyfWZwMv7uZrZ78kKYGHXOe3LVEDwBf6/JfTvelTvRnqTAxCavmJvl 41h7nEvDOAkgacwAwEW07GlqwA4x5f5b5sfezqq869n7IOs2DHfruehRMCudtXnH7dgB bhgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779316915; x=1779921715; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=BGD0/pwTecIM3ffPJGuJWN0Obb0PAJ/eWot9laPpF0c=; b=dQToKm6abbqAgbxLPhW2KvQHzGVdTqcxcC1ICo5UWoBaQd8hd1QiJTBlmMDhcWZ4vW boTPAhIl0ZWqf04VBKsDTG+CEPw9qj4g4j2PFwPHvxUNozwovBi8M2HJfD6QTIOuJYhS Xc9zq2gEK2fKP8Z4VvB9Mq8pLHP6Qi1vciQFR9juzgQF4y0Z/D/O5qQfBF0r3Gz6s5Gq XAo//jkyifAOv1G0A2SzlSN2XubW7ZVheNtWTqOASZdC335Ci5oUqH/xGTzRqOn++iW+ 33moG1h/naaSPR6HQd6sozX7COiGNOnJah+VFXNJ4aLmVDOOI3vq+odjJ25ZDB5QZm6f 77nw== X-Forwarded-Encrypted: i=1; AFNElJ8syom5jDZ3uHGWMraJkRnLMBMiuLGPyJhgaZXbKpgH5E/RzY+R0KeqNyznOHYUsydVQZAZnh+ttUAorX8=@vger.kernel.org X-Gm-Message-State: AOJu0Yx0/l/o3cbr+CnrfgX8zKA3t7scYuMO7gTBg97CX+U+h/7iX2A0 UjjFxmoc27TzH85WD/BcmVSPj6zxACj8kh5vwXVbsGHCrwm8Tz7SnOgE X-Gm-Gg: Acq92OHrJqxd95Nt6UogyHsg9Bg6goCO/Mc6yaQClnbuCjs1nhg5ZHRoSAZrjtafj7v 3WpSssrxmmjAneFDSGK6U6lHjfnm5MPzWZ96Br5iga/LfKWxhjFOdRfGLkpo2VAzlDDBDRdPaVn Y4/h27K13/T2tJGthHlqMqaOjBbdyBd9XZCjtnIVbSlGW0U2fGOD469o1+akCRaz14mcTQo6YVw +854OFcNURVE6hXoR5Yk2uv5x6vOC5VsZ6MX/L6B811eajLB1ZGU/itxDPtEiINpny4a5oqWkOW 9QJGY8vpeFtK1HTsB20mOowS3FOKnFL2WwEQJRTIasZY1DYix4ktls2akm+CsNili1jTRBq/K2G FqK8N7FV2v5BySesvBWMLpDEWH9r1W9+lu45s7e049E6sp4kvcMyOAvtyTScNyZj206Rz/zv9R3 SprSBx86ABD/puwNoiyQ4rNbhi35DQGoxX/nhIdHyuCfRtmXPjilH0OXNYWGMvDH+6 X-Received: by 2002:a05:6000:2481:b0:45e:73eb:1ff7 with SMTP id ffacd0b85a97d-45ea37b46b1mr404588f8f.3.1779316914988; Wed, 20 May 2026 15:41:54 -0700 (PDT) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0a17ec2sm53978549f8f.24.2026.05.20.15.41.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 May 2026 15:41:54 -0700 (PDT) Date: Wed, 20 May 2026 23:41:53 +0100 From: David Laight To: Viacheslav Dubeyko Cc: "jack@suse.cz" , "brauner@kernel.org" , "neil@brown.name" , "slava@dubeyko.com" , Alex Markuze , "zenghongling@kylinos.cn" , "idryomov@gmail.com" , "jlayton@kernel.org" , "ceph-devel@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "zhongling0719@126.com" Subject: Re: [PATCH] ceph: Fix ERR_PTR(0) in ceph_mkdir() Message-ID: <20260520234153.7a89f0b1@pumpkin> In-Reply-To: References: <20260520095428.69422-1-zenghongling@kylinos.cn> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) 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-Transfer-Encoding: 7bit On Wed, 20 May 2026 18:49:18 +0000 Viacheslav Dubeyko wrote: > On Wed, 2026-05-20 at 17:54 +0800, Hongling Zeng wrote: > > When mkdir succeeds, ceph_mkdir() sets ret to ERR_PTR(0) which is > > incorrect. It should return NULL instead for success. > > > > Fixes: 88d5baf69082 ("Change inode_operations.mkdir to return struct dentry *") > > Signed-off-by: Hongling Zeng > > --- > > fs/ceph/dir.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c > > index bac9cfb6b982..ab7f7b7016c6 100644 > > --- a/fs/ceph/dir.c > > +++ b/fs/ceph/dir.c > > @@ -1167,7 +1167,7 @@ static struct dentry *ceph_mkdir(struct mnt_idmap *idmap, struct inode *dir, > > !req->r_reply_info.head->is_target && > > !req->r_reply_info.head->is_dentry) > > err = ceph_handle_notrace_create(dir, dentry); > > - ret = ERR_PTR(err); > > + ret = err ? ERR_PTR(err) : NULL; > > out_req: > > if (!IS_ERR(ret) && req->r_dentry != dentry) > > /* Some other dentry was spliced in */ > > I think that this modification doesn't make sense. The ERR_PTR(0) returns NULL, > as far as I can understand. > > static inline void * __must_check ERR_PTR(long error) > { > return (void *) error; > } > > ERR_PTR(0) evaluates to (void *)0, which is exactly NULL. In practise yes, technically no. NULL is an 'integer constant expression with value 0' cast to 'void *'. ERR_PTR(0) will be the 'all zero' bit pattern, NULL is an implementation defined bit pattern. So '(void *)(1 - 1)' is NULL but '(void *)(x = 0)' isn't. But I think sparse() is trying to stop you converting a NULL pointer into 'success' when failure to 'allocate/find' something would normally be an error. -- David > > Thanks, > Slava.