projects
/
linux-2.6-block.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'for-linus-5.4-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-block.git]
/
fs
/
fs_parser.c
diff --git
a/fs/fs_parser.c
b/fs/fs_parser.c
index 460ea4206fa25cd8121271cd83407ab0074e7aac..d1930adce68da1fb226b894e15951e7dd895aa6c 100644
(file)
--- a/
fs/fs_parser.c
+++ b/
fs/fs_parser.c
@@
-204,9
+204,23
@@
int fs_parse(struct fs_context *fc,
goto okay;
case fs_param_is_fd: {
goto okay;
case fs_param_is_fd: {
- if (param->type != fs_value_is_file)
+ switch (param->type) {
+ case fs_value_is_string:
+ if (!result->has_value)
+ goto bad_value;
+
+ ret = kstrtouint(param->string, 0, &result->uint_32);
+ break;
+ case fs_value_is_file:
+ result->uint_32 = param->dirfd;
+ ret = 0;
+ default:
goto bad_value;
goto bad_value;
- goto okay;
+ }
+
+ if (result->uint_32 > INT_MAX)
+ goto bad_value;
+ goto maybe_okay;
}
case fs_param_is_blockdev:
}
case fs_param_is_blockdev: