Commit 8241571f authored by Dave Jiang's avatar Dave Jiang Committed by Vinod Koul

dmaengine: idxd: convert sprintf() to sysfs_emit() for all usages

Convert sprintf() to sysfs_emit() in order to check buffer overrun on sysfs
outputs.
Signed-off-by: default avatarDave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/161894440044.3202472.13926639619695319753.stgit@djiang5-desk3.ch.intel.comSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent eb15e715
...@@ -350,9 +350,9 @@ static ssize_t engine_group_id_show(struct device *dev, ...@@ -350,9 +350,9 @@ static ssize_t engine_group_id_show(struct device *dev,
container_of(dev, struct idxd_engine, conf_dev); container_of(dev, struct idxd_engine, conf_dev);
if (engine->group) if (engine->group)
return sprintf(buf, "%d\n", engine->group->id); return sysfs_emit(buf, "%d\n", engine->group->id);
else else
return sprintf(buf, "%d\n", -1); return sysfs_emit(buf, "%d\n", -1);
} }
static ssize_t engine_group_id_store(struct device *dev, static ssize_t engine_group_id_store(struct device *dev,
...@@ -447,7 +447,7 @@ static ssize_t group_tokens_reserved_show(struct device *dev, ...@@ -447,7 +447,7 @@ static ssize_t group_tokens_reserved_show(struct device *dev,
struct idxd_group *group = struct idxd_group *group =
container_of(dev, struct idxd_group, conf_dev); container_of(dev, struct idxd_group, conf_dev);
return sprintf(buf, "%u\n", group->tokens_reserved); return sysfs_emit(buf, "%u\n", group->tokens_reserved);
} }
static ssize_t group_tokens_reserved_store(struct device *dev, static ssize_t group_tokens_reserved_store(struct device *dev,
...@@ -495,7 +495,7 @@ static ssize_t group_tokens_allowed_show(struct device *dev, ...@@ -495,7 +495,7 @@ static ssize_t group_tokens_allowed_show(struct device *dev,
struct idxd_group *group = struct idxd_group *group =
container_of(dev, struct idxd_group, conf_dev); container_of(dev, struct idxd_group, conf_dev);
return sprintf(buf, "%u\n", group->tokens_allowed); return sysfs_emit(buf, "%u\n", group->tokens_allowed);
} }
static ssize_t group_tokens_allowed_store(struct device *dev, static ssize_t group_tokens_allowed_store(struct device *dev,
...@@ -540,7 +540,7 @@ static ssize_t group_use_token_limit_show(struct device *dev, ...@@ -540,7 +540,7 @@ static ssize_t group_use_token_limit_show(struct device *dev,
struct idxd_group *group = struct idxd_group *group =
container_of(dev, struct idxd_group, conf_dev); container_of(dev, struct idxd_group, conf_dev);
return sprintf(buf, "%u\n", group->use_token_limit); return sysfs_emit(buf, "%u\n", group->use_token_limit);
} }
static ssize_t group_use_token_limit_store(struct device *dev, static ssize_t group_use_token_limit_store(struct device *dev,
...@@ -583,7 +583,6 @@ static ssize_t group_engines_show(struct device *dev, ...@@ -583,7 +583,6 @@ static ssize_t group_engines_show(struct device *dev,
struct idxd_group *group = struct idxd_group *group =
container_of(dev, struct idxd_group, conf_dev); container_of(dev, struct idxd_group, conf_dev);
int i, rc = 0; int i, rc = 0;
char *tmp = buf;
struct idxd_device *idxd = group->idxd; struct idxd_device *idxd = group->idxd;
for (i = 0; i < idxd->max_engines; i++) { for (i = 0; i < idxd->max_engines; i++) {
...@@ -593,12 +592,13 @@ static ssize_t group_engines_show(struct device *dev, ...@@ -593,12 +592,13 @@ static ssize_t group_engines_show(struct device *dev,
continue; continue;
if (engine->group->id == group->id) if (engine->group->id == group->id)
rc += sprintf(tmp + rc, "engine%d.%d ", rc += sysfs_emit_at(buf, rc, "engine%d.%d ", idxd->id, engine->id);
idxd->id, engine->id);
} }
if (!rc)
return 0;
rc--; rc--;
rc += sprintf(tmp + rc, "\n"); rc += sysfs_emit_at(buf, rc, "\n");
return rc; return rc;
} }
...@@ -612,7 +612,6 @@ static ssize_t group_work_queues_show(struct device *dev, ...@@ -612,7 +612,6 @@ static ssize_t group_work_queues_show(struct device *dev,
struct idxd_group *group = struct idxd_group *group =
container_of(dev, struct idxd_group, conf_dev); container_of(dev, struct idxd_group, conf_dev);
int i, rc = 0; int i, rc = 0;
char *tmp = buf;
struct idxd_device *idxd = group->idxd; struct idxd_device *idxd = group->idxd;
for (i = 0; i < idxd->max_wqs; i++) { for (i = 0; i < idxd->max_wqs; i++) {
...@@ -622,12 +621,13 @@ static ssize_t group_work_queues_show(struct device *dev, ...@@ -622,12 +621,13 @@ static ssize_t group_work_queues_show(struct device *dev,
continue; continue;
if (wq->group->id == group->id) if (wq->group->id == group->id)
rc += sprintf(tmp + rc, "wq%d.%d ", rc += sysfs_emit_at(buf, rc, "wq%d.%d ", idxd->id, wq->id);
idxd->id, wq->id);
} }
if (!rc)
return 0;
rc--; rc--;
rc += sprintf(tmp + rc, "\n"); rc += sysfs_emit_at(buf, rc, "\n");
return rc; return rc;
} }
...@@ -642,7 +642,7 @@ static ssize_t group_traffic_class_a_show(struct device *dev, ...@@ -642,7 +642,7 @@ static ssize_t group_traffic_class_a_show(struct device *dev,
struct idxd_group *group = struct idxd_group *group =
container_of(dev, struct idxd_group, conf_dev); container_of(dev, struct idxd_group, conf_dev);
return sprintf(buf, "%d\n", group->tc_a); return sysfs_emit(buf, "%d\n", group->tc_a);
} }
static ssize_t group_traffic_class_a_store(struct device *dev, static ssize_t group_traffic_class_a_store(struct device *dev,
...@@ -683,7 +683,7 @@ static ssize_t group_traffic_class_b_show(struct device *dev, ...@@ -683,7 +683,7 @@ static ssize_t group_traffic_class_b_show(struct device *dev,
struct idxd_group *group = struct idxd_group *group =
container_of(dev, struct idxd_group, conf_dev); container_of(dev, struct idxd_group, conf_dev);
return sprintf(buf, "%d\n", group->tc_b); return sysfs_emit(buf, "%d\n", group->tc_b);
} }
static ssize_t group_traffic_class_b_store(struct device *dev, static ssize_t group_traffic_class_b_store(struct device *dev,
...@@ -756,7 +756,7 @@ static ssize_t wq_clients_show(struct device *dev, ...@@ -756,7 +756,7 @@ static ssize_t wq_clients_show(struct device *dev,
{ {
struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev); struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev);
return sprintf(buf, "%d\n", wq->client_count); return sysfs_emit(buf, "%d\n", wq->client_count);
} }
static struct device_attribute dev_attr_wq_clients = static struct device_attribute dev_attr_wq_clients =
...@@ -769,12 +769,12 @@ static ssize_t wq_state_show(struct device *dev, ...@@ -769,12 +769,12 @@ static ssize_t wq_state_show(struct device *dev,
switch (wq->state) { switch (wq->state) {
case IDXD_WQ_DISABLED: case IDXD_WQ_DISABLED:
return sprintf(buf, "disabled\n"); return sysfs_emit(buf, "disabled\n");
case IDXD_WQ_ENABLED: case IDXD_WQ_ENABLED:
return sprintf(buf, "enabled\n"); return sysfs_emit(buf, "enabled\n");
} }
return sprintf(buf, "unknown\n"); return sysfs_emit(buf, "unknown\n");
} }
static struct device_attribute dev_attr_wq_state = static struct device_attribute dev_attr_wq_state =
...@@ -786,9 +786,9 @@ static ssize_t wq_group_id_show(struct device *dev, ...@@ -786,9 +786,9 @@ static ssize_t wq_group_id_show(struct device *dev,
struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev); struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev);
if (wq->group) if (wq->group)
return sprintf(buf, "%u\n", wq->group->id); return sysfs_emit(buf, "%u\n", wq->group->id);
else else
return sprintf(buf, "-1\n"); return sysfs_emit(buf, "-1\n");
} }
static ssize_t wq_group_id_store(struct device *dev, static ssize_t wq_group_id_store(struct device *dev,
...@@ -840,8 +840,7 @@ static ssize_t wq_mode_show(struct device *dev, struct device_attribute *attr, ...@@ -840,8 +840,7 @@ static ssize_t wq_mode_show(struct device *dev, struct device_attribute *attr,
{ {
struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev); struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev);
return sprintf(buf, "%s\n", return sysfs_emit(buf, "%s\n", wq_dedicated(wq) ? "dedicated" : "shared");
wq_dedicated(wq) ? "dedicated" : "shared");
} }
static ssize_t wq_mode_store(struct device *dev, static ssize_t wq_mode_store(struct device *dev,
...@@ -877,7 +876,7 @@ static ssize_t wq_size_show(struct device *dev, struct device_attribute *attr, ...@@ -877,7 +876,7 @@ static ssize_t wq_size_show(struct device *dev, struct device_attribute *attr,
{ {
struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev); struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev);
return sprintf(buf, "%u\n", wq->size); return sysfs_emit(buf, "%u\n", wq->size);
} }
static int total_claimed_wq_size(struct idxd_device *idxd) static int total_claimed_wq_size(struct idxd_device *idxd)
...@@ -928,7 +927,7 @@ static ssize_t wq_priority_show(struct device *dev, ...@@ -928,7 +927,7 @@ static ssize_t wq_priority_show(struct device *dev,
{ {
struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev); struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev);
return sprintf(buf, "%u\n", wq->priority); return sysfs_emit(buf, "%u\n", wq->priority);
} }
static ssize_t wq_priority_store(struct device *dev, static ssize_t wq_priority_store(struct device *dev,
...@@ -965,8 +964,7 @@ static ssize_t wq_block_on_fault_show(struct device *dev, ...@@ -965,8 +964,7 @@ static ssize_t wq_block_on_fault_show(struct device *dev,
{ {
struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev); struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev);
return sprintf(buf, "%u\n", return sysfs_emit(buf, "%u\n", test_bit(WQ_FLAG_BLOCK_ON_FAULT, &wq->flags));
test_bit(WQ_FLAG_BLOCK_ON_FAULT, &wq->flags));
} }
static ssize_t wq_block_on_fault_store(struct device *dev, static ssize_t wq_block_on_fault_store(struct device *dev,
...@@ -1005,7 +1003,7 @@ static ssize_t wq_threshold_show(struct device *dev, ...@@ -1005,7 +1003,7 @@ static ssize_t wq_threshold_show(struct device *dev,
{ {
struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev); struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev);
return sprintf(buf, "%u\n", wq->threshold); return sysfs_emit(buf, "%u\n", wq->threshold);
} }
static ssize_t wq_threshold_store(struct device *dev, static ssize_t wq_threshold_store(struct device *dev,
...@@ -1048,15 +1046,12 @@ static ssize_t wq_type_show(struct device *dev, ...@@ -1048,15 +1046,12 @@ static ssize_t wq_type_show(struct device *dev,
switch (wq->type) { switch (wq->type) {
case IDXD_WQT_KERNEL: case IDXD_WQT_KERNEL:
return sprintf(buf, "%s\n", return sysfs_emit(buf, "%s\n", idxd_wq_type_names[IDXD_WQT_KERNEL]);
idxd_wq_type_names[IDXD_WQT_KERNEL]);
case IDXD_WQT_USER: case IDXD_WQT_USER:
return sprintf(buf, "%s\n", return sysfs_emit(buf, "%s\n", idxd_wq_type_names[IDXD_WQT_USER]);
idxd_wq_type_names[IDXD_WQT_USER]);
case IDXD_WQT_NONE: case IDXD_WQT_NONE:
default: default:
return sprintf(buf, "%s\n", return sysfs_emit(buf, "%s\n", idxd_wq_type_names[IDXD_WQT_NONE]);
idxd_wq_type_names[IDXD_WQT_NONE]);
} }
return -EINVAL; return -EINVAL;
...@@ -1097,7 +1092,7 @@ static ssize_t wq_name_show(struct device *dev, ...@@ -1097,7 +1092,7 @@ static ssize_t wq_name_show(struct device *dev,
{ {
struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev); struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev);
return sprintf(buf, "%s\n", wq->name); return sysfs_emit(buf, "%s\n", wq->name);
} }
static ssize_t wq_name_store(struct device *dev, static ssize_t wq_name_store(struct device *dev,
...@@ -1167,7 +1162,7 @@ static ssize_t wq_max_transfer_size_show(struct device *dev, struct device_attri ...@@ -1167,7 +1162,7 @@ static ssize_t wq_max_transfer_size_show(struct device *dev, struct device_attri
{ {
struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev); struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev);
return sprintf(buf, "%llu\n", wq->max_xfer_bytes); return sysfs_emit(buf, "%llu\n", wq->max_xfer_bytes);
} }
static ssize_t wq_max_transfer_size_store(struct device *dev, struct device_attribute *attr, static ssize_t wq_max_transfer_size_store(struct device *dev, struct device_attribute *attr,
...@@ -1201,7 +1196,7 @@ static ssize_t wq_max_batch_size_show(struct device *dev, struct device_attribut ...@@ -1201,7 +1196,7 @@ static ssize_t wq_max_batch_size_show(struct device *dev, struct device_attribut
{ {
struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev); struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev);
return sprintf(buf, "%u\n", wq->max_batch_size); return sysfs_emit(buf, "%u\n", wq->max_batch_size);
} }
static ssize_t wq_max_batch_size_store(struct device *dev, struct device_attribute *attr, static ssize_t wq_max_batch_size_store(struct device *dev, struct device_attribute *attr,
...@@ -1234,7 +1229,7 @@ static ssize_t wq_ats_disable_show(struct device *dev, struct device_attribute * ...@@ -1234,7 +1229,7 @@ static ssize_t wq_ats_disable_show(struct device *dev, struct device_attribute *
{ {
struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev); struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev);
return sprintf(buf, "%u\n", wq->ats_dis); return sysfs_emit(buf, "%u\n", wq->ats_dis);
} }
static ssize_t wq_ats_disable_store(struct device *dev, struct device_attribute *attr, static ssize_t wq_ats_disable_store(struct device *dev, struct device_attribute *attr,
...@@ -1311,7 +1306,7 @@ static ssize_t version_show(struct device *dev, struct device_attribute *attr, ...@@ -1311,7 +1306,7 @@ static ssize_t version_show(struct device *dev, struct device_attribute *attr,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%#x\n", idxd->hw.version); return sysfs_emit(buf, "%#x\n", idxd->hw.version);
} }
static DEVICE_ATTR_RO(version); static DEVICE_ATTR_RO(version);
...@@ -1322,7 +1317,7 @@ static ssize_t max_work_queues_size_show(struct device *dev, ...@@ -1322,7 +1317,7 @@ static ssize_t max_work_queues_size_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%u\n", idxd->max_wq_size); return sysfs_emit(buf, "%u\n", idxd->max_wq_size);
} }
static DEVICE_ATTR_RO(max_work_queues_size); static DEVICE_ATTR_RO(max_work_queues_size);
...@@ -1332,7 +1327,7 @@ static ssize_t max_groups_show(struct device *dev, ...@@ -1332,7 +1327,7 @@ static ssize_t max_groups_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%u\n", idxd->max_groups); return sysfs_emit(buf, "%u\n", idxd->max_groups);
} }
static DEVICE_ATTR_RO(max_groups); static DEVICE_ATTR_RO(max_groups);
...@@ -1342,7 +1337,7 @@ static ssize_t max_work_queues_show(struct device *dev, ...@@ -1342,7 +1337,7 @@ static ssize_t max_work_queues_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%u\n", idxd->max_wqs); return sysfs_emit(buf, "%u\n", idxd->max_wqs);
} }
static DEVICE_ATTR_RO(max_work_queues); static DEVICE_ATTR_RO(max_work_queues);
...@@ -1352,7 +1347,7 @@ static ssize_t max_engines_show(struct device *dev, ...@@ -1352,7 +1347,7 @@ static ssize_t max_engines_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%u\n", idxd->max_engines); return sysfs_emit(buf, "%u\n", idxd->max_engines);
} }
static DEVICE_ATTR_RO(max_engines); static DEVICE_ATTR_RO(max_engines);
...@@ -1362,7 +1357,7 @@ static ssize_t numa_node_show(struct device *dev, ...@@ -1362,7 +1357,7 @@ static ssize_t numa_node_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%d\n", dev_to_node(&idxd->pdev->dev)); return sysfs_emit(buf, "%d\n", dev_to_node(&idxd->pdev->dev));
} }
static DEVICE_ATTR_RO(numa_node); static DEVICE_ATTR_RO(numa_node);
...@@ -1372,7 +1367,7 @@ static ssize_t max_batch_size_show(struct device *dev, ...@@ -1372,7 +1367,7 @@ static ssize_t max_batch_size_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%u\n", idxd->max_batch_size); return sysfs_emit(buf, "%u\n", idxd->max_batch_size);
} }
static DEVICE_ATTR_RO(max_batch_size); static DEVICE_ATTR_RO(max_batch_size);
...@@ -1383,7 +1378,7 @@ static ssize_t max_transfer_size_show(struct device *dev, ...@@ -1383,7 +1378,7 @@ static ssize_t max_transfer_size_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%llu\n", idxd->max_xfer_bytes); return sysfs_emit(buf, "%llu\n", idxd->max_xfer_bytes);
} }
static DEVICE_ATTR_RO(max_transfer_size); static DEVICE_ATTR_RO(max_transfer_size);
...@@ -1409,7 +1404,7 @@ static ssize_t gen_cap_show(struct device *dev, ...@@ -1409,7 +1404,7 @@ static ssize_t gen_cap_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%#llx\n", idxd->hw.gen_cap.bits); return sysfs_emit(buf, "%#llx\n", idxd->hw.gen_cap.bits);
} }
static DEVICE_ATTR_RO(gen_cap); static DEVICE_ATTR_RO(gen_cap);
...@@ -1419,8 +1414,7 @@ static ssize_t configurable_show(struct device *dev, ...@@ -1419,8 +1414,7 @@ static ssize_t configurable_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%u\n", return sysfs_emit(buf, "%u\n", test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags));
test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags));
} }
static DEVICE_ATTR_RO(configurable); static DEVICE_ATTR_RO(configurable);
...@@ -1440,7 +1434,7 @@ static ssize_t clients_show(struct device *dev, ...@@ -1440,7 +1434,7 @@ static ssize_t clients_show(struct device *dev,
} }
spin_unlock_irqrestore(&idxd->dev_lock, flags); spin_unlock_irqrestore(&idxd->dev_lock, flags);
return sprintf(buf, "%d\n", count); return sysfs_emit(buf, "%d\n", count);
} }
static DEVICE_ATTR_RO(clients); static DEVICE_ATTR_RO(clients);
...@@ -1450,7 +1444,7 @@ static ssize_t pasid_enabled_show(struct device *dev, ...@@ -1450,7 +1444,7 @@ static ssize_t pasid_enabled_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%u\n", device_pasid_enabled(idxd)); return sysfs_emit(buf, "%u\n", device_pasid_enabled(idxd));
} }
static DEVICE_ATTR_RO(pasid_enabled); static DEVICE_ATTR_RO(pasid_enabled);
...@@ -1463,14 +1457,14 @@ static ssize_t state_show(struct device *dev, ...@@ -1463,14 +1457,14 @@ static ssize_t state_show(struct device *dev,
switch (idxd->state) { switch (idxd->state) {
case IDXD_DEV_DISABLED: case IDXD_DEV_DISABLED:
case IDXD_DEV_CONF_READY: case IDXD_DEV_CONF_READY:
return sprintf(buf, "disabled\n"); return sysfs_emit(buf, "disabled\n");
case IDXD_DEV_ENABLED: case IDXD_DEV_ENABLED:
return sprintf(buf, "enabled\n"); return sysfs_emit(buf, "enabled\n");
case IDXD_DEV_HALTED: case IDXD_DEV_HALTED:
return sprintf(buf, "halted\n"); return sysfs_emit(buf, "halted\n");
} }
return sprintf(buf, "unknown\n"); return sysfs_emit(buf, "unknown\n");
} }
static DEVICE_ATTR_RO(state); static DEVICE_ATTR_RO(state);
...@@ -1484,10 +1478,10 @@ static ssize_t errors_show(struct device *dev, ...@@ -1484,10 +1478,10 @@ static ssize_t errors_show(struct device *dev,
spin_lock_irqsave(&idxd->dev_lock, flags); spin_lock_irqsave(&idxd->dev_lock, flags);
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
out += sprintf(buf + out, "%#018llx ", idxd->sw_err.bits[i]); out += sysfs_emit_at(buf, out, "%#018llx ", idxd->sw_err.bits[i]);
spin_unlock_irqrestore(&idxd->dev_lock, flags); spin_unlock_irqrestore(&idxd->dev_lock, flags);
out--; out--;
out += sprintf(buf + out, "\n"); out += sysfs_emit_at(buf, out, "\n");
return out; return out;
} }
static DEVICE_ATTR_RO(errors); static DEVICE_ATTR_RO(errors);
...@@ -1498,7 +1492,7 @@ static ssize_t max_tokens_show(struct device *dev, ...@@ -1498,7 +1492,7 @@ static ssize_t max_tokens_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%u\n", idxd->max_tokens); return sysfs_emit(buf, "%u\n", idxd->max_tokens);
} }
static DEVICE_ATTR_RO(max_tokens); static DEVICE_ATTR_RO(max_tokens);
...@@ -1508,7 +1502,7 @@ static ssize_t token_limit_show(struct device *dev, ...@@ -1508,7 +1502,7 @@ static ssize_t token_limit_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%u\n", idxd->token_limit); return sysfs_emit(buf, "%u\n", idxd->token_limit);
} }
static ssize_t token_limit_store(struct device *dev, static ssize_t token_limit_store(struct device *dev,
...@@ -1547,7 +1541,7 @@ static ssize_t cdev_major_show(struct device *dev, ...@@ -1547,7 +1541,7 @@ static ssize_t cdev_major_show(struct device *dev,
struct idxd_device *idxd = struct idxd_device *idxd =
container_of(dev, struct idxd_device, conf_dev); container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%u\n", idxd->major); return sysfs_emit(buf, "%u\n", idxd->major);
} }
static DEVICE_ATTR_RO(cdev_major); static DEVICE_ATTR_RO(cdev_major);
...@@ -1556,7 +1550,7 @@ static ssize_t cmd_status_show(struct device *dev, ...@@ -1556,7 +1550,7 @@ static ssize_t cmd_status_show(struct device *dev,
{ {
struct idxd_device *idxd = container_of(dev, struct idxd_device, conf_dev); struct idxd_device *idxd = container_of(dev, struct idxd_device, conf_dev);
return sprintf(buf, "%#x\n", idxd->cmd_status); return sysfs_emit(buf, "%#x\n", idxd->cmd_status);
} }
static DEVICE_ATTR_RO(cmd_status); static DEVICE_ATTR_RO(cmd_status);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment