s390/xpram: don't modify module parameters
During parsing of the sizes array the pointer to the particular string is lost. Keep it by using an extra pointer to store the end position of the parsed string. Keeping these parameters accessible can be helpful for debugging purposes and for userspace reading the parameters at runtime via sysfs. Also this will ensure that the memory is freed at module unload time. Reported-by: Michael Veigel <veigel@de.ibm.com> Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
4dd841a0c4
commit
7e2e2b96f5
|
@ -257,6 +257,7 @@ static int __init xpram_setup_sizes(unsigned long pages)
|
|||
unsigned long mem_needed;
|
||||
unsigned long mem_auto;
|
||||
unsigned long long size;
|
||||
char *sizes_end;
|
||||
int mem_auto_no;
|
||||
int i;
|
||||
|
||||
|
@ -275,8 +276,8 @@ static int __init xpram_setup_sizes(unsigned long pages)
|
|||
mem_auto_no = 0;
|
||||
for (i = 0; i < xpram_devs; i++) {
|
||||
if (sizes[i]) {
|
||||
size = simple_strtoull(sizes[i], &sizes[i], 0);
|
||||
switch (sizes[i][0]) {
|
||||
size = simple_strtoull(sizes[i], &sizes_end, 0);
|
||||
switch (*sizes_end) {
|
||||
case 'g':
|
||||
case 'G':
|
||||
size <<= 20;
|
||||
|
|
Loading…
Reference in New Issue