Merge tag 'overflow-v4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
Pull overflow updates from Kees Cook: "This adds the new overflow checking helpers and adds them to the 2-factor argument allocators. And this adds the saturating size helpers and does a treewide replacement for the struct_size() usage. Additionally this adds the overflow testing modules to make sure everything works. I'm still working on the treewide replacements for allocators with "simple" multiplied arguments: *alloc(a * b, ...) -> *alloc_array(a, b, ...) and *zalloc(a * b, ...) -> *calloc(a, b, ...) as well as the more complex cases, but that's separable from this portion of the series. I expect to have the rest sent before -rc1 closes; there are a lot of messy cases to clean up. Summary: - Introduce arithmetic overflow test helper functions (Rasmus) - Use overflow helpers in 2-factor allocators (Kees, Rasmus) - Introduce overflow test module (Rasmus, Kees) - Introduce saturating size helper functions (Matthew, Kees) - Treewide use of struct_size() for allocators (Kees)" * tag 'overflow-v4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: treewide: Use struct_size() for devm_kmalloc() and friends treewide: Use struct_size() for vmalloc()-family treewide: Use struct_size() for kmalloc()-family device: Use overflow helpers for devm_kmalloc() mm: Use overflow helpers in kvmalloc() mm: Use overflow helpers in kmalloc_array*() test_overflow: Add memory allocation overflow tests overflow.h: Add allocation size calculation helpers test_overflow: Report test failures test_overflow: macrofy some more, do more tests for free lib: add runtime test of check_*_overflow functions compiler.h: enable builtin overflow checkers and add fallback code
Este cometimento está contido em:
@@ -259,8 +259,8 @@ int _snd_ctl_add_slave(struct snd_kcontrol *master, struct snd_kcontrol *slave,
|
||||
struct link_master *master_link = snd_kcontrol_chip(master);
|
||||
struct link_slave *srec;
|
||||
|
||||
srec = kzalloc(sizeof(*srec) +
|
||||
slave->count * sizeof(*slave->vd), GFP_KERNEL);
|
||||
srec = kzalloc(struct_size(srec, slave.vd, slave->count),
|
||||
GFP_KERNEL);
|
||||
if (!srec)
|
||||
return -ENOMEM;
|
||||
srec->kctl = slave;
|
||||
|
@@ -147,7 +147,8 @@ static struct apq8016_sbc_data *apq8016_sbc_parse_of(struct snd_soc_card *card)
|
||||
num_links = of_get_child_count(node);
|
||||
|
||||
/* Allocate the private data and the DAI link array */
|
||||
data = devm_kzalloc(dev, sizeof(*data) + sizeof(*link) * num_links,
|
||||
data = devm_kzalloc(dev,
|
||||
struct_size(data, dai_link, num_links),
|
||||
GFP_KERNEL);
|
||||
if (!data)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
@@ -1086,7 +1086,7 @@ static int dapm_widget_list_create(struct snd_soc_dapm_widget_list **list,
|
||||
list_for_each(it, widgets)
|
||||
size++;
|
||||
|
||||
*list = kzalloc(sizeof(**list) + size * sizeof(*w), GFP_KERNEL);
|
||||
*list = kzalloc(struct_size(*list, widgets, size), GFP_KERNEL);
|
||||
if (*list == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador