hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/acpi/sysfs.c
....@@ -214,7 +214,7 @@
214214
215215 static int param_get_trace_method_name(char *buffer, const struct kernel_param *kp)
216216 {
217
- return scnprintf(buffer, PAGE_SIZE, "%s", acpi_gbl_trace_method_name);
217
+ return scnprintf(buffer, PAGE_SIZE, "%s\n", acpi_gbl_trace_method_name);
218218 }
219219
220220 static const struct kernel_param_ops param_ops_trace_method = {
....@@ -271,15 +271,15 @@
271271 static int param_get_trace_state(char *buffer, const struct kernel_param *kp)
272272 {
273273 if (!(acpi_gbl_trace_flags & ACPI_TRACE_ENABLED))
274
- return sprintf(buffer, "disable");
274
+ return sprintf(buffer, "disable\n");
275275 else {
276276 if (acpi_gbl_trace_method_name) {
277277 if (acpi_gbl_trace_flags & ACPI_TRACE_ONESHOT)
278
- return sprintf(buffer, "method-once");
278
+ return sprintf(buffer, "method-once\n");
279279 else
280
- return sprintf(buffer, "method");
280
+ return sprintf(buffer, "method\n");
281281 } else
282
- return sprintf(buffer, "enable");
282
+ return sprintf(buffer, "enable\n");
283283 }
284284 return 0;
285285 }
....@@ -302,7 +302,7 @@
302302 {
303303 int result;
304304
305
- result = sprintf(buffer, "%x", ACPI_CA_VERSION);
305
+ result = sprintf(buffer, "%x\n", ACPI_CA_VERSION);
306306
307307 return result;
308308 }
....@@ -327,9 +327,9 @@
327327
328328 struct acpi_table_attr {
329329 struct bin_attribute attr;
330
- char name[ACPI_NAME_SIZE];
330
+ char name[ACPI_NAMESEG_SIZE];
331331 int instance;
332
- char filename[ACPI_NAME_SIZE+ACPI_INST_SIZE];
332
+ char filename[ACPI_NAMESEG_SIZE+ACPI_INST_SIZE];
333333 struct list_head node;
334334 };
335335
....@@ -368,10 +368,10 @@
368368 char instance_str[ACPI_INST_SIZE];
369369
370370 sysfs_attr_init(&table_attr->attr.attr);
371
- ACPI_MOVE_NAME(table_attr->name, table_header->signature);
371
+ ACPI_COPY_NAMESEG(table_attr->name, table_header->signature);
372372
373373 list_for_each_entry(attr, &acpi_table_attr_list, node) {
374
- if (ACPI_COMPARE_NAME(table_attr->name, attr->name))
374
+ if (ACPI_COMPARE_NAMESEG(table_attr->name, attr->name))
375375 if (table_attr->instance < attr->instance)
376376 table_attr->instance = attr->instance;
377377 }
....@@ -382,8 +382,8 @@
382382 return -ERANGE;
383383 }
384384
385
- ACPI_MOVE_NAME(table_attr->filename, table_header->signature);
386
- table_attr->filename[ACPI_NAME_SIZE] = '\0';
385
+ ACPI_COPY_NAMESEG(table_attr->filename, table_header->signature);
386
+ table_attr->filename[ACPI_NAMESEG_SIZE] = '\0';
387387 if (table_attr->instance > 1 || (table_attr->instance == 1 &&
388388 !acpi_get_table
389389 (table_header->signature, 2, &header))) {
....@@ -439,18 +439,29 @@
439439 {
440440 struct acpi_data_attr *data_attr;
441441 void __iomem *base;
442
- ssize_t rc;
442
+ ssize_t size;
443443
444444 data_attr = container_of(bin_attr, struct acpi_data_attr, attr);
445
+ size = data_attr->attr.size;
445446
446
- base = acpi_os_map_memory(data_attr->addr, data_attr->attr.size);
447
+ if (offset < 0)
448
+ return -EINVAL;
449
+
450
+ if (offset >= size)
451
+ return 0;
452
+
453
+ if (count > size - offset)
454
+ count = size - offset;
455
+
456
+ base = acpi_os_map_iomem(data_attr->addr, size);
447457 if (!base)
448458 return -ENOMEM;
449
- rc = memory_read_from_buffer(buf, count, &offset, base,
450
- data_attr->attr.size);
451
- acpi_os_unmap_memory(base, data_attr->attr.size);
452459
453
- return rc;
460
+ memcpy_fromio(buf, base + offset, count);
461
+
462
+ acpi_os_unmap_iomem(base, size);
463
+
464
+ return count;
454465 }
455466
456467 static int acpi_bert_data_init(void *th, struct acpi_data_attr *data_attr)
....@@ -484,7 +495,7 @@
484495 int i;
485496
486497 for (i = 0; i < NUM_ACPI_DATA_OBJS; i++) {
487
- if (ACPI_COMPARE_NAME(th->signature, acpi_data_objs[i].name)) {
498
+ if (ACPI_COMPARE_NAMESEG(th->signature, acpi_data_objs[i].name)) {
488499 data_attr = kzalloc(sizeof(*data_attr), GFP_KERNEL);
489500 if (!data_attr)
490501 return -ENOMEM;
....@@ -648,26 +659,29 @@
648659 }
649660 }
650661
651
-static int get_status(u32 index, acpi_event_status *status,
662
+static int get_status(u32 index, acpi_event_status *ret,
652663 acpi_handle *handle)
653664 {
654
- int result;
665
+ acpi_status status;
655666
656667 if (index >= num_gpes + ACPI_NUM_FIXED_EVENTS)
657668 return -EINVAL;
658669
659670 if (index < num_gpes) {
660
- result = acpi_get_gpe_device(index, handle);
661
- if (result) {
671
+ status = acpi_get_gpe_device(index, handle);
672
+ if (ACPI_FAILURE(status)) {
662673 ACPI_EXCEPTION((AE_INFO, AE_NOT_FOUND,
663674 "Invalid GPE 0x%x", index));
664
- return result;
675
+ return -ENXIO;
665676 }
666
- result = acpi_get_gpe_status(*handle, index, status);
667
- } else if (index < (num_gpes + ACPI_NUM_FIXED_EVENTS))
668
- result = acpi_get_event_status(index - num_gpes, status);
677
+ status = acpi_get_gpe_status(*handle, index, ret);
678
+ } else {
679
+ status = acpi_get_event_status(index - num_gpes, ret);
680
+ }
681
+ if (ACPI_FAILURE(status))
682
+ return -EIO;
669683
670
- return result;
684
+ return 0;
671685 }
672686
673687 static ssize_t counter_show(struct kobject *kobj,