mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
mm/slub: clean up create_unique_id()
As Christophe JAILLET suggested [1]
In create_unique_id(),
"looks that ID_STR_LENGTH could even be reduced to 32 or 16.
The 2nd BUG_ON at the end of the function could certainly be just
removed as well or remplaced by a:
if (p > name + ID_STR_LENGTH - 1) {
kfree(name);
return -E<something>;
}
"
According to above suggestion, let's do below cleanups:
1. reduce ID_STR_LENGTH to 32, as the buffer size should be enough;
2. use WARN_ON instead of BUG_ON() and return error if check condition
is true;
3. use snprintf instead of sprintf to avoid overflow.
[1] https://lore.kernel.org/linux-mm/2025305d-16db-abdf-6cd3-1fb93371c2b4@wanadoo.fr/
Suggested-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
Signed-off-by: Chao Yu <chao.yu@oppo.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
This commit is contained in:
parent
2bfbb0271a
commit
d65360f224
|
|
@ -5874,7 +5874,7 @@ static inline struct kset *cache_kset(struct kmem_cache *s)
|
|||
return slab_kset;
|
||||
}
|
||||
|
||||
#define ID_STR_LENGTH 64
|
||||
#define ID_STR_LENGTH 32
|
||||
|
||||
/* Create a unique string id for a slab cache:
|
||||
*
|
||||
|
|
@ -5907,9 +5907,12 @@ static char *create_unique_id(struct kmem_cache *s)
|
|||
*p++ = 'A';
|
||||
if (p != name + 1)
|
||||
*p++ = '-';
|
||||
p += sprintf(p, "%07u", s->size);
|
||||
p += snprintf(p, ID_STR_LENGTH - (p - name), "%07u", s->size);
|
||||
|
||||
BUG_ON(p > name + ID_STR_LENGTH - 1);
|
||||
if (WARN_ON(p > name + ID_STR_LENGTH - 1)) {
|
||||
kfree(name);
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user