On Wed, Jan 29, 2025 at 04:37:12AM +0000, Al Viro wrote: > On Tue, Jan 28, 2025 at 04:00:58PM +0000, Borah, Chaitanya Kumar wrote: > > > Unfortunately this change does not help us. I think it is the methods member that causes the problem. So the following change solves the problem for us. > > > > > > --- a/fs/debugfs/file.c > > +++ b/fs/debugfs/file.c > > @@ -102,6 +102,8 @@ static int __debugfs_file_get(struct dentry *dentry, enum dbgfs_get_mode mode) > > if (!fsd) > > return -ENOMEM; > > > > + fsd->methods = 0; > > + > > if (mode == DBGFS_GET_SHORT) { > > const struct debugfs_short_fops *ops; > > ops = fsd->short_fops = DEBUGFS_I(inode)->short_fops; > > D'OH. > > Both are needed, actually. Slightly longer term I would rather > split full_proxy_{read,write,lseek}() into short and full variant, > getting rid of the "check which pointer is non-NULL" and killed > the two remaining users of debugfs_real_fops() outside of > fs/debugfs/file.c; then we could union these ->..._fops pointers, > but until then they need to be initialized. > > And yes, ->methods obviously needs to be initialized. > > Al, bloody embarrassed ;-/ No worries, want to send a patch to fix both of these up so we can fix up Linus's tree now? thanks, greg k-h