From: Akinobu Mita Signed-off-by: Akinobu Mita Cc: Martin Schwidefsky Cc: Heiko Carstens Cc: Peter Oberparleiter Signed-off-by: Andrew Morton --- drivers/s390/cio/chp.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff -puN drivers/s390/cio/chp.c~s390-cio-use-memory_read_from_buffer drivers/s390/cio/chp.c --- a/drivers/s390/cio/chp.c~s390-cio-use-memory_read_from_buffer +++ a/drivers/s390/cio/chp.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -143,21 +144,14 @@ static ssize_t chp_measurement_chars_rea { struct channel_path *chp; struct device *device; - unsigned int size; device = container_of(kobj, struct device, kobj); chp = to_channelpath(device); if (!chp->cmg_chars) return 0; - size = sizeof(struct cmg_chars); - - if (off > size) - return 0; - if (off + count > size) - count = size - off; - memcpy(buf, chp->cmg_chars + off, count); - return count; + return memory_read_from_buffer(buf, count, &off, + chp->cmg_chars, sizeof(struct cmg_chars)); } static struct bin_attribute chp_measurement_chars_attr = { _