mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
fs/fs_parse: Remove unused and problematic validate_constant_table()
Remove validate_constant_table() since: - It has no caller. - It has below 3 bugs for good constant table array array[] which must end with a empty entry, and take below invocation for explaination: validate_constant_table(array, ARRAY_SIZE(array), ...) - Always return wrong value due to the last empty entry. - Imprecise error message for missorted case. - Potential NULL pointer dereference since the last pr_err() may use @tbl[i].name NULL pointer to print the last empty entry's name. Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com> Link: https://lore.kernel.org/20250415-fix_fs-v4-1-5d575124a3ff@quicinc.com Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
296b67059e
commit
d1f482108a
3 changed files with 0 additions and 69 deletions
|
@ -752,21 +752,6 @@ process the parameters it is given.
|
|||
If a match is found, the corresponding value is returned. If a match
|
||||
isn't found, the not_found value is returned instead.
|
||||
|
||||
* ::
|
||||
|
||||
bool validate_constant_table(const struct constant_table *tbl,
|
||||
size_t tbl_size,
|
||||
int low, int high, int special);
|
||||
|
||||
Validate a constant table. Checks that all the elements are appropriately
|
||||
ordered, that there are no duplicates and that the values are between low
|
||||
and high inclusive, though provision is made for one allowable special
|
||||
value outside of that range. If no special value is required, special
|
||||
should just be set to lie inside the low-to-high range.
|
||||
|
||||
If all is good, true is returned. If the table is invalid, errors are
|
||||
logged to the kernel log buffer and false is returned.
|
||||
|
||||
* ::
|
||||
|
||||
bool fs_validate_description(const char *name,
|
||||
|
|
|
@ -379,55 +379,6 @@ int fs_param_is_path(struct p_log *log, const struct fs_parameter_spec *p,
|
|||
EXPORT_SYMBOL(fs_param_is_path);
|
||||
|
||||
#ifdef CONFIG_VALIDATE_FS_PARSER
|
||||
/**
|
||||
* validate_constant_table - Validate a constant table
|
||||
* @tbl: The constant table to validate.
|
||||
* @tbl_size: The size of the table.
|
||||
* @low: The lowest permissible value.
|
||||
* @high: The highest permissible value.
|
||||
* @special: One special permissible value outside of the range.
|
||||
*/
|
||||
bool validate_constant_table(const struct constant_table *tbl, size_t tbl_size,
|
||||
int low, int high, int special)
|
||||
{
|
||||
size_t i;
|
||||
bool good = true;
|
||||
|
||||
if (tbl_size == 0) {
|
||||
pr_warn("VALIDATE C-TBL: Empty\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
for (i = 0; i < tbl_size; i++) {
|
||||
if (!tbl[i].name) {
|
||||
pr_err("VALIDATE C-TBL[%zu]: Null\n", i);
|
||||
good = false;
|
||||
} else if (i > 0 && tbl[i - 1].name) {
|
||||
int c = strcmp(tbl[i-1].name, tbl[i].name);
|
||||
|
||||
if (c == 0) {
|
||||
pr_err("VALIDATE C-TBL[%zu]: Duplicate %s\n",
|
||||
i, tbl[i].name);
|
||||
good = false;
|
||||
}
|
||||
if (c > 0) {
|
||||
pr_err("VALIDATE C-TBL[%zu]: Missorted %s>=%s\n",
|
||||
i, tbl[i-1].name, tbl[i].name);
|
||||
good = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (tbl[i].value != special &&
|
||||
(tbl[i].value < low || tbl[i].value > high)) {
|
||||
pr_err("VALIDATE C-TBL[%zu]: %s->%d const out of range (%d-%d)\n",
|
||||
i, tbl[i].name, tbl[i].value, low, high);
|
||||
good = false;
|
||||
}
|
||||
}
|
||||
|
||||
return good;
|
||||
}
|
||||
|
||||
/**
|
||||
* fs_validate_description - Validate a parameter specification array
|
||||
* @name: Owner name of the parameter specification array
|
||||
|
|
|
@ -87,14 +87,9 @@ extern int lookup_constant(const struct constant_table tbl[], const char *name,
|
|||
extern const struct constant_table bool_names[];
|
||||
|
||||
#ifdef CONFIG_VALIDATE_FS_PARSER
|
||||
extern bool validate_constant_table(const struct constant_table *tbl, size_t tbl_size,
|
||||
int low, int high, int special);
|
||||
extern bool fs_validate_description(const char *name,
|
||||
const struct fs_parameter_spec *desc);
|
||||
#else
|
||||
static inline bool validate_constant_table(const struct constant_table *tbl, size_t tbl_size,
|
||||
int low, int high, int special)
|
||||
{ return true; }
|
||||
static inline bool fs_validate_description(const char *name,
|
||||
const struct fs_parameter_spec *desc)
|
||||
{ return true; }
|
||||
|
|
Loading…
Add table
Reference in a new issue