[PATCH] powerpc/opal_elog: Handle multiple writes to ack attribute
Mahesh J Salgaonkar
mahesh at linux.ibm.com
Wed Oct 14 18:14:35 AEDT 2020
On 2020-10-14 12:18:13 Wed, Aneesh Kumar K.V wrote:
> Even though we use self removing sysfs helper, we still need
> to make sure we do the final kobject delete conditionally.
> sysfs_remove_file_self() will handle parallel calls to remove
> the sysfs attribute file and returns true only in the caller
> that removed the attribute file. The other parallel callers
> are returned false. Do the final kobject delete checking
> the return value of sysfs_remove_file_self().
>
> Cc: Mahesh Salgaonkar <mahesh at linux.ibm.com>
> Cc: Oliver O'Halloran <oohall at gmail.com>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar at linux.ibm.com>
> ---
> arch/powerpc/platforms/powernv/opal-elog.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/arch/powerpc/platforms/powernv/opal-elog.c b/arch/powerpc/platforms/powernv/opal-elog.c
> index 5e33b1fc67c2..37b380eef41a 100644
> --- a/arch/powerpc/platforms/powernv/opal-elog.c
> +++ b/arch/powerpc/platforms/powernv/opal-elog.c
> @@ -72,9 +72,14 @@ static ssize_t elog_ack_store(struct elog_obj *elog_obj,
> const char *buf,
> size_t count)
> {
> - opal_send_ack_elog(elog_obj->id);
> - sysfs_remove_file_self(&elog_obj->kobj, &attr->attr);
> - kobject_put(&elog_obj->kobj);
> + /*
> + * Try to self remove this attribute. If we are successful,
> + * delete the kobject itself.
> + */
> + if (sysfs_remove_file_self(&elog_obj->kobj, &attr->attr)) {
> + opal_send_ack_elog(elog_obj->id);
> + kobject_put(&elog_obj->kobj);
> + }
> return count;
> }
Looks good.
Reviewed-by: Mahesh Salgaonkar <mahesh at linux.ibm.com>
Thanks,
-Mahesh.
More information about the Linuxppc-dev
mailing list