[PATCH] sysfs: add BIN_ATTR_WO() macro

Nayna nayna at linux.vnet.ibm.com
Wed Oct 2 04:55:49 AEST 2019



On 10/01/2019 02:16 PM, Greg Kroah-Hartman wrote:
> On Tue, Oct 01, 2019 at 02:08:53PM -0400, Nayna wrote:
>> Hi Greg,
>>
>>
>> On 08/26/2019 11:01 AM, Greg Kroah-Hartman wrote:
>>> This variant was missing from sysfs.h, I guess no one noticed it before.
>>>
>>> Turns out the powerpc secure variable code can use it, so add it to the
>>> tree for it, and potentially others to take advantage of, instead of
>>> open-coding it.
>>>
>>> Reported-by: Nayna Jain <nayna at linux.ibm.com>
>>> Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
>>> ---
>>>
>>> I'll queue this up to my tree for 5.4-rc1, but if you want to take this
>>> in your tree earlier, feel free to do so.
>>>
>>>    include/linux/sysfs.h | 9 +++++++++
>>>    1 file changed, 9 insertions(+)
>>>
>>> diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
>>> index 965236795750..5420817ed317 100644
>>> --- a/include/linux/sysfs.h
>>> +++ b/include/linux/sysfs.h
>>> @@ -196,6 +196,12 @@ struct bin_attribute {
>>>    	.size	= _size,						\
>>>    }
>>> +#define __BIN_ATTR_WO(_name) {						\
>>> +	.attr	= { .name = __stringify(_name), .mode = 0200 },		\
>>> +	.store	= _name##_store,					\
>>> +	.size	= _size,						\
>>> +}
>>> +
>>>    #define __BIN_ATTR_RW(_name, _size)					\
>>>    	__BIN_ATTR(_name, 0644, _name##_read, _name##_write, _size)
>>> @@ -208,6 +214,9 @@ struct bin_attribute bin_attr_##_name = __BIN_ATTR(_name, _mode, _read,	\
>>>    #define BIN_ATTR_RO(_name, _size)					\
>>>    struct bin_attribute bin_attr_##_name = __BIN_ATTR_RO(_name, _size)
>>> +#define BIN_ATTR_WO(_name, _size)					\
>>> +struct bin_attribute bin_attr_##_name = __BIN_ATTR_WO(_name, _size)
>>> +
>>>    #define BIN_ATTR_RW(_name, _size)					\
>>>    struct bin_attribute bin_attr_##_name = __BIN_ATTR_RW(_name, _size)
>> I am sorry. I didn't notice it via inspection but there is a bug in this
>> macro. When I actually try using it, compilation fails. Here's a likely
>> patch:
>>
>> diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
>> index 5420817ed317..fa7ee503fb76 100644
>> --- a/include/linux/sysfs.h
>> +++ b/include/linux/sysfs.h
>> @@ -196,9 +196,9 @@ struct bin_attribute {
>>          .size   = _size,                                                \
>>   }
>> -#define __BIN_ATTR_WO(_name) {                                         \
>> +#define __BIN_ATTR_WO(_name, _size) {                                  \
>>          .attr   = { .name = __stringify(_name), .mode = 0200 },         \
>> -       .store  = _name##_store,                                        \
>> +       .write  = _name##_write,                                        \
>>          .size   = _size,                                                \
>>   }
>>
> Heh, good catch.  Can you send a real patch for this that I can apply to
> give you the proper credit for finding and fixing this?

Sure.. Thanks Greg !!

Thanks & Regards,
       - Nayna


More information about the Linuxppc-dev mailing list