in bus.c [1035:1063]
static ssize_t size_store(struct device *dev, struct device_attribute *attr,
const char *buf, size_t len)
{
ssize_t rc;
unsigned long long val;
struct dev_dax *dev_dax = to_dev_dax(dev);
struct dax_region *dax_region = dev_dax->region;
rc = kstrtoull(buf, 0, &val);
if (rc)
return rc;
if (!alloc_is_aligned(dev_dax, val)) {
dev_dbg(dev, "%s: size: %lld misaligned\n", __func__, val);
return -EINVAL;
}
device_lock(dax_region->dev);
if (!dax_region->dev->driver) {
device_unlock(dax_region->dev);
return -ENXIO;
}
device_lock(dev);
rc = dev_dax_resize(dax_region, dev_dax, val);
device_unlock(dev);
device_unlock(dax_region->dev);
return rc == 0 ? len : rc;
}