diff options
Diffstat (limited to 'kernel/module.c')
| -rw-r--r-- | kernel/module.c | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/kernel/module.c b/kernel/module.c index 8b7d8805819..5842a71cf05 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -1187,7 +1187,8 @@ static void add_sect_attrs(struct module *mod, unsigned int nsect,  	/* Count loaded sections and allocate structures */  	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++;  	size[0] = ALIGN(sizeof(*sect_attrs)  			+ 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++) {  		if (! (sechdrs[i].sh_flags & SHF_ALLOC))  			continue; +		if (!sechdrs[i].sh_size) +			continue;  		sattr->address = sechdrs[i].sh_addr;  		sattr->name = kstrdup(secstrings + sechdrs[i].sh_name,  					GFP_KERNEL); | 
