[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