On Tue, 2018-05-29 at 11:17 -0700, Evan Green wrote: > +static ssize_t _name##_store(struct device *dev, \ > + struct device_attribute *attr, const char *buf, \ > + size_t count) \ > +{ \ > + struct ufs_hba *hba = dev_get_drvdata(dev); \ > + unsigned long value; \ > + if (kstrtoul(buf, 0, &value)) \ > + return -EINVAL; \ > + if (ufshcd_query_attr(hba, UPIU_QUERY_OPCODE_WRITE_ATTR, \ > + QUERY_ATTR_IDN##_uname, 0, 0, (u32 *)&value)) \ > + return -EINVAL; \ > + return count; \ > +} \ Casting an "unsigned long" pointer into an u32 pointer looks evil to me. Please don't do this. Thanks, Bart.