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 <mah...@linux.ibm.com>
> Cc: Oliver O'Halloran <ooh...@gmail.com>
> Signed-off-by: Aneesh Kumar K.V <aneesh.ku...@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 <mah...@linux.ibm.com>

Thanks,
-Mahesh.

Reply via email to