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@xxxxxxxxxxxxx> > > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > > --- > > > > 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? thanks, greg k-h