Re: [PATCH] ceph: fix variable dereferenced before check in ceph_umount_begin()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Apr 01, 2025 at 06:29:06PM +0000, Viacheslav Dubeyko wrote:
> On Tue, 2025-04-01 at 12:38 +0200, Christian Brauner wrote:
> > On Fri, Mar 28, 2025 at 07:30:11PM +0000, Viacheslav Dubeyko wrote:
> > > On Fri, 2025-03-28 at 18:43 +0000, Matthew Wilcox wrote:
> > > > On Fri, Mar 28, 2025 at 11:33:59AM -0700, Viacheslav Dubeyko wrote:
> > > > > This patch moves pointer check before the first
> > > > > dereference of the pointer.
> > > > > 
> > > > > Reported-by: kernel test robot <lkp@xxxxxxxxx>
> > > > > Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> > > > > Closes: https://lore.kernel.org/r/202503280852.YDB3pxUY-lkp@xxxxxxxxx/   
> > > > 
> > > > Ooh, that's not good.  Need to figure out a way to defeat the proofpoint
> > > > garbage.
> > > > 
> > > 
> > > Yeah, this is not good.
> > > 
> > > > > diff --git a/fs/ceph/super.c b/fs/ceph/super.c
> > > > > index f3951253e393..6cbc33c56e0e 100644
> > > > > --- a/fs/ceph/super.c
> > > > > +++ b/fs/ceph/super.c
> > > > > @@ -1032,9 +1032,11 @@ void ceph_umount_begin(struct super_block *sb)
> > > > >  {
> > > > >  	struct ceph_fs_client *fsc = ceph_sb_to_fs_client(sb);
> > > > >  
> > > > > -	doutc(fsc->client, "starting forced umount\n");
> > > > >  	if (!fsc)
> > > > >  		return;
> > > > > +
> > > > > +	doutc(fsc->client, "starting forced umount\n");
> > > > 
> > > > I don't think we should be checking fsc against NULL.  I don't see a way
> > > > that sb->s_fs_info can be set to NULL, do you?
> > > 
> > > I assume because forced umount could happen anytime, potentially, we could have
> > > sb->s_fs_info not set. But, frankly speaking, I started to worry about fsc-
> > 
> > No, it must be set. The VFS guarantees that the superblock is still
> > alive when it calls into ceph via ->umount_begin().
> 
> So, if we have the guarantee of fsc pointer validity, then we need to change
> this checking of fsc->client pointer. Or, probably, completely remove this check
> here?

If the fsc->client pointer can be NULLed before the mount is shut down
then yes. If it can't then the check can be removed completely.




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux