|
@@ -1187,7 +1187,8 @@ static void add_sect_attrs(struct module *mod, unsigned int nsect,
|
|
|
|
|
|
|
|
/* Count loaded sections and allocate structures */
|
|
/* Count loaded sections and allocate structures */
|
|
|
for (i = 0; i < nsect; i++)
|
|
for (i = 0; i < nsect; i++)
|
|
|
- if (sechdrs[i].sh_flags & SHF_ALLOC)
|
|
|
|
|
|
|
+ if (sechdrs[i].sh_flags & SHF_ALLOC
|
|
|
|
|
+ && sechdrs[i].sh_size)
|
|
|
nloaded++;
|
|
nloaded++;
|
|
|
size[0] = ALIGN(sizeof(*sect_attrs)
|
|
size[0] = ALIGN(sizeof(*sect_attrs)
|
|
|
+ nloaded * sizeof(sect_attrs->attrs[0]),
|
|
+ nloaded * sizeof(sect_attrs->attrs[0]),
|
|
@@ -1207,6 +1208,8 @@ static void add_sect_attrs(struct module *mod, unsigned int nsect,
|
|
|
for (i = 0; i < nsect; i++) {
|
|
for (i = 0; i < nsect; i++) {
|
|
|
if (! (sechdrs[i].sh_flags & SHF_ALLOC))
|
|
if (! (sechdrs[i].sh_flags & SHF_ALLOC))
|
|
|
continue;
|
|
continue;
|
|
|
|
|
+ if (!sechdrs[i].sh_size)
|
|
|
|
|
+ continue;
|
|
|
sattr->address = sechdrs[i].sh_addr;
|
|
sattr->address = sechdrs[i].sh_addr;
|
|
|
sattr->name = kstrdup(secstrings + sechdrs[i].sh_name,
|
|
sattr->name = kstrdup(secstrings + sechdrs[i].sh_name,
|
|
|
GFP_KERNEL);
|
|
GFP_KERNEL);
|