Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

slab: use new API for remaining command line parameters

Use core_param() and __core_param_cb() instead of __setup() or
__setup_param() to improve syntax checking and error messages.

Replace get_option() with kstrtouint(), because:
* the latter accepts a pointer to const char,
* these parameters should not accept ranges,
* error value can be passed directly to parser.

There is one more change apart from the parsing of numeric parameters:
slab_strict_numa parameter name must match exactly. Before this patch the
kernel would silently accept any option that starts with the name as an
undocumented alias.

Signed-off-by: Petr Tesarik <ptesarik@suse.com>
Link: https://patch.msgid.link/6ae7e0ddc72b7619203c07dd5103a598e12f713b.1761324765.git.ptesarik@suse.com
Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>

authored by

Petr Tesarik and committed by
Vlastimil Babka
8ad018db aed760df

+34 -23
+34 -23
mm/slub.c
··· 8131 8131 * Kmalloc subsystem 8132 8132 *******************************************************************/ 8133 8133 8134 - static int __init setup_slub_min_order(char *str) 8134 + static int __init setup_slub_min_order(const char *str, const struct kernel_param *kp) 8135 8135 { 8136 - get_option(&str, (int *)&slub_min_order); 8136 + int ret; 8137 + 8138 + ret = kstrtouint(str, 0, &slub_min_order); 8139 + if (ret) 8140 + return ret; 8137 8141 8138 8142 if (slub_min_order > slub_max_order) 8139 8143 slub_max_order = slub_min_order; 8140 8144 8141 - return 1; 8145 + return 0; 8142 8146 } 8143 8147 8144 - __setup("slab_min_order=", setup_slub_min_order); 8145 - __setup_param("slub_min_order=", slub_min_order, setup_slub_min_order, 0); 8148 + static const struct kernel_param_ops param_ops_slab_min_order __initconst = { 8149 + .set = setup_slub_min_order, 8150 + }; 8151 + __core_param_cb(slab_min_order, &param_ops_slab_min_order, &slub_min_order, 0); 8152 + __core_param_cb(slub_min_order, &param_ops_slab_min_order, &slub_min_order, 0); 8146 8153 8147 - 8148 - static int __init setup_slub_max_order(char *str) 8154 + static int __init setup_slub_max_order(const char *str, const struct kernel_param *kp) 8149 8155 { 8150 - get_option(&str, (int *)&slub_max_order); 8156 + int ret; 8157 + 8158 + ret = kstrtouint(str, 0, &slub_max_order); 8159 + if (ret) 8160 + return ret; 8161 + 8151 8162 slub_max_order = min_t(unsigned int, slub_max_order, MAX_PAGE_ORDER); 8152 8163 8153 8164 if (slub_min_order > slub_max_order) 8154 8165 slub_min_order = slub_max_order; 8155 8166 8156 - return 1; 8167 + return 0; 8157 8168 } 8158 8169 8159 - __setup("slab_max_order=", setup_slub_max_order); 8160 - __setup_param("slub_max_order=", slub_max_order, setup_slub_max_order, 0); 8170 + static const struct kernel_param_ops param_ops_slab_max_order __initconst = { 8171 + .set = setup_slub_max_order, 8172 + }; 8173 + __core_param_cb(slab_max_order, &param_ops_slab_max_order, &slub_max_order, 0); 8174 + __core_param_cb(slub_max_order, &param_ops_slab_max_order, &slub_max_order, 0); 8161 8175 8162 - static int __init setup_slub_min_objects(char *str) 8163 - { 8164 - get_option(&str, (int *)&slub_min_objects); 8165 - 8166 - return 1; 8167 - } 8168 - 8169 - __setup("slab_min_objects=", setup_slub_min_objects); 8170 - __setup_param("slub_min_objects=", slub_min_objects, setup_slub_min_objects, 0); 8176 + core_param(slab_min_objects, slub_min_objects, uint, 0); 8177 + core_param(slub_min_objects, slub_min_objects, uint, 0); 8171 8178 8172 8179 #ifdef CONFIG_NUMA 8173 - static int __init setup_slab_strict_numa(char *str) 8180 + static int __init setup_slab_strict_numa(const char *str, const struct kernel_param *kp) 8174 8181 { 8175 8182 if (nr_node_ids > 1) { 8176 8183 static_branch_enable(&strict_numa); ··· 8186 8179 pr_warn("slab_strict_numa parameter set on non NUMA system.\n"); 8187 8180 } 8188 8181 8189 - return 1; 8182 + return 0; 8190 8183 } 8191 8184 8192 - __setup("slab_strict_numa", setup_slab_strict_numa); 8185 + static const struct kernel_param_ops param_ops_slab_strict_numa __initconst = { 8186 + .flags = KERNEL_PARAM_OPS_FL_NOARG, 8187 + .set = setup_slab_strict_numa, 8188 + }; 8189 + __core_param_cb(slab_strict_numa, &param_ops_slab_strict_numa, NULL, 0); 8193 8190 #endif 8194 8191 8195 8192