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 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-
>client:

struct ceph_fs_client {
	struct super_block *sb;

	struct list_head metric_wakeup;

	struct ceph_mount_options *mount_options;
	struct ceph_client *client;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
        We are trying to access the client pointer in debug output. 

<skipped>
};

So, maybe, we need to add fsc->client check here too.

Thanks,
Slava.







[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