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.