David Hildenbrand <david@xxxxxxxxxx> writes: > On 11.08.25 11:06, Shivank Garg wrote: >> From: Ackerley Tng <ackerleytng@xxxxxxxxxx> >> >> [...snip...] >> >> +static struct file *kvm_gmem_inode_create_getfile(void *priv, loff_t size, >> + u64 flags) >> +{ >> + static const char *name = "[kvm-gmem]"; >> + struct inode *inode; >> + struct file *file; >> + int err; >> + >> + err = -ENOENT; > > Maybe add a comment here when the module reference will get > dropped. And maybe we should just switch to fops_get() + fops_put? > > /* __fput() will take care of fops_put(). */ > if (!fops_get(&kvm_gmem_fops)) > goto err; > Sounds good! Please see attached patch. It's exactly what you suggested except I renamed the goto target to err_fops_put: >> + >> + inode = kvm_gmem_inode_make_secure_inode(name, size, flags); >> + if (IS_ERR(inode)) { >> + err = PTR_ERR(inode); >> + goto err_put_module; >> + } >> + >> + file = alloc_file_pseudo(inode, kvm_gmem_mnt, name, O_RDWR, >> + &kvm_gmem_fops); >> + if (IS_ERR(file)) { >> + err = PTR_ERR(file); >> + goto err_put_inode; >> + } >> + >> + file->f_flags |= O_LARGEFILE; >> + file->private_data = priv; >> + >> +out: >> + return file; >> + >> +err_put_inode: >> + iput(inode); >> +err_put_module: >> + module_put(kvm_gmem_fops.owner); > > fops_put(&kvm_gmem_fops); > > ? > > > Acked-by: David Hildenbrand <david@xxxxxxxxxx> > > -- > Cheers, > > David / dhildenb