Re: [PATCH] sysfs: correctly handle read offset on PREALLOC attrs

From: Tejun Heo
Date: Thu Jun 23 2016 - 17:18:52 EST


On Wed, Jun 22, 2016 at 09:42:16PM +0300, Konstantin Khlebnikov wrote:
> Attributes declared with __ATTR_PREALLOC use sysfs_kf_read() which returns
> zero bytes for non-zero offset. This breaks script checkarray in mdadm tool
> in debian where /bin/sh is 'dash' because its builtin 'read' reads only one
> byte at a time. Script gets 'i' instead of 'idle' when reads current action
> from /sys/block/$dev/md/sync_action and as a result does nothing.
>
> This patch adds trivial implementation of partial read: generate whole
> string and move required part into buffer head.
>
> Signed-off-by: Konstantin Khlebnikov <khlebnikov@xxxxxxxxxxxxxx>
> Fixes: 4ef67a8c95f3 ("sysfs/kernfs: make read requests on pre-alloc files use the buffer.")
> Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=787950
> Cc: Stable <stable@xxxxxxxxxxxxxxx> # v3.19+

Acked-by: Tejun Heo <tj@xxxxxxxxxx>

Thanks.

--
tejun