|
@@ -202,16 +202,19 @@ static inline struct mtd_info *cfi_cmdset_unknown(struct map_info *map,
|
|
struct cfi_private *cfi = map->fldrv_priv;
|
|
struct cfi_private *cfi = map->fldrv_priv;
|
|
__u16 type = primary?cfi->cfiq->P_ID:cfi->cfiq->A_ID;
|
|
__u16 type = primary?cfi->cfiq->P_ID:cfi->cfiq->A_ID;
|
|
#ifdef CONFIG_MODULES
|
|
#ifdef CONFIG_MODULES
|
|
- char probename[sizeof("cfi_cmdset_%4.4X")];
|
|
|
|
cfi_cmdset_fn_t *probe_function;
|
|
cfi_cmdset_fn_t *probe_function;
|
|
|
|
+ char *probename;
|
|
|
|
|
|
- sprintf(probename, "cfi_cmdset_%4.4X", type);
|
|
|
|
|
|
+ probename = kasprintf(GFP_KERNEL, "cfi_cmdset_%4.4X", type);
|
|
|
|
+ if (!probename)
|
|
|
|
+ return NULL;
|
|
|
|
|
|
probe_function = __symbol_get(probename);
|
|
probe_function = __symbol_get(probename);
|
|
if (!probe_function) {
|
|
if (!probe_function) {
|
|
request_module("cfi_cmdset_%4.4X", type);
|
|
request_module("cfi_cmdset_%4.4X", type);
|
|
probe_function = __symbol_get(probename);
|
|
probe_function = __symbol_get(probename);
|
|
}
|
|
}
|
|
|
|
+ kfree(probename);
|
|
|
|
|
|
if (probe_function) {
|
|
if (probe_function) {
|
|
struct mtd_info *mtd;
|
|
struct mtd_info *mtd;
|