Message ID | 20240730051625.14349-30-viro@kernel.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [01/39] memcg_write_event_control(): fix a user-triggerable oops | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Guessing tree name failed - patch did not apply, async |
On Tue, Jul 30, 2024 at 01:16:16AM GMT, viro@kernel.org wrote: > From: Al Viro <viro@zeniv.linux.org.uk> > > fdput() is followed by invalf(), which is transposable with it. > > Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> > --- Reviewed-by: Christian Brauner <brauner@kernel.org>
diff --git a/fs/coda/inode.c b/fs/coda/inode.c index 7d56b6d1e4c3..293cf5e6dfeb 100644 --- a/fs/coda/inode.c +++ b/fs/coda/inode.c @@ -122,22 +122,17 @@ static const struct fs_parameter_spec coda_param_specs[] = { static int coda_parse_fd(struct fs_context *fc, int fd) { struct coda_fs_context *ctx = fc->fs_private; - struct fd f; + CLASS(fd, f)(fd); struct inode *inode; int idx; - f = fdget(fd); - if (!fd_file(f)) + if (fd_empty(f)) return -EBADF; inode = file_inode(fd_file(f)); - if (!S_ISCHR(inode->i_mode) || imajor(inode) != CODA_PSDEV_MAJOR) { - fdput(f); + if (!S_ISCHR(inode->i_mode) || imajor(inode) != CODA_PSDEV_MAJOR) return invalf(fc, "code: Not coda psdev"); - } idx = iminor(inode); - fdput(f); - if (idx < 0 || idx >= MAX_CODADEVS) return invalf(fc, "coda: Bad minor number"); ctx->idx = idx;