diff options
Diffstat (limited to 'arch/s390/kernel/ipl.c')
-rw-r--r-- | arch/s390/kernel/ipl.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c index 9f6dfd306abb..54b2779b5e2f 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/delay.h> | 14 | #include <linux/delay.h> |
15 | #include <linux/reboot.h> | 15 | #include <linux/reboot.h> |
16 | #include <linux/ctype.h> | 16 | #include <linux/ctype.h> |
17 | #include <linux/fs.h> | ||
17 | #include <asm/ipl.h> | 18 | #include <asm/ipl.h> |
18 | #include <asm/smp.h> | 19 | #include <asm/smp.h> |
19 | #include <asm/setup.h> | 20 | #include <asm/setup.h> |
@@ -338,14 +339,8 @@ static struct kobj_attribute sys_ipl_device_attr = | |||
338 | static ssize_t ipl_parameter_read(struct kobject *kobj, struct bin_attribute *attr, | 339 | static ssize_t ipl_parameter_read(struct kobject *kobj, struct bin_attribute *attr, |
339 | char *buf, loff_t off, size_t count) | 340 | char *buf, loff_t off, size_t count) |
340 | { | 341 | { |
341 | unsigned int size = IPL_PARMBLOCK_SIZE; | 342 | return memory_read_from_buffer(buf, count, &off, IPL_PARMBLOCK_START, |
342 | 343 | IPL_PARMBLOCK_SIZE); | |
343 | if (off > size) | ||
344 | return 0; | ||
345 | if (off + count > size) | ||
346 | count = size - off; | ||
347 | memcpy(buf, (void *)IPL_PARMBLOCK_START + off, count); | ||
348 | return count; | ||
349 | } | 344 | } |
350 | 345 | ||
351 | static struct bin_attribute ipl_parameter_attr = { | 346 | static struct bin_attribute ipl_parameter_attr = { |
@@ -363,12 +358,7 @@ static ssize_t ipl_scp_data_read(struct kobject *kobj, struct bin_attribute *att | |||
363 | unsigned int size = IPL_PARMBLOCK_START->ipl_info.fcp.scp_data_len; | 358 | unsigned int size = IPL_PARMBLOCK_START->ipl_info.fcp.scp_data_len; |
364 | void *scp_data = &IPL_PARMBLOCK_START->ipl_info.fcp.scp_data; | 359 | void *scp_data = &IPL_PARMBLOCK_START->ipl_info.fcp.scp_data; |
365 | 360 | ||
366 | if (off > size) | 361 | return memory_read_from_buffer(buf, count, &off, scp_data, size); |
367 | return 0; | ||
368 | if (off + count > size) | ||
369 | count = size - off; | ||
370 | memcpy(buf, scp_data + off, count); | ||
371 | return count; | ||
372 | } | 362 | } |
373 | 363 | ||
374 | static struct bin_attribute ipl_scp_data_attr = { | 364 | static struct bin_attribute ipl_scp_data_attr = { |