diff options
| author | Armin Wolf <W_Armin@gmx.de> | 2026-06-12 19:34:51 +0200 |
|---|---|---|
| committer | Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> | 2026-07-09 16:42:51 +0300 |
| commit | b8f0a45fed75cd045a898bb625f063b9ab91e86b (patch) | |
| tree | 73b098c25a0de49f1c8bd61fb8cd23797de01071 | |
| parent | adfd6846bea13667ff28f8aaf00c32fbd69825ab (diff) | |
platform/x86: dell-ddv: Use no_free_ptr() to simplify error handling
Use no_free_ptr() inside dell_wmi_ddv_query_buffer() in order to
be able to use __free() with the result of the WMI call.
Suggested-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Link: https://patch.msgid.link/20260612173451.467629-5-W_Armin@gmx.de
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
| -rw-r--r-- | drivers/platform/x86/dell/dell-wmi-ddv.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/drivers/platform/x86/dell/dell-wmi-ddv.c b/drivers/platform/x86/dell/dell-wmi-ddv.c index 736d9b1fdcfb..f8903ced461b 100644 --- a/drivers/platform/x86/dell/dell-wmi-ddv.c +++ b/drivers/platform/x86/dell/dell-wmi-ddv.c @@ -196,40 +196,30 @@ static int dell_wmi_ddv_query_integer(struct wmi_device *wdev, enum dell_ddv_met static int dell_wmi_ddv_query_buffer(struct wmi_device *wdev, enum dell_ddv_method method, u32 arg, struct dell_wmi_buffer **result) { - struct dell_wmi_buffer *buffer; struct wmi_buffer output; size_t buffer_size; int ret; - ret = dell_wmi_ddv_query(wdev, method, arg, &output, sizeof(*buffer)); + ret = dell_wmi_ddv_query(wdev, method, arg, &output, sizeof(struct dell_wmi_buffer)); if (ret < 0) return ret; - buffer = output.data; - if (!le32_to_cpu(buffer->raw_size)) { - ret = -ENODATA; + struct dell_wmi_buffer *buffer __free(kfree) = output.data; - goto err_free; - } + if (!le32_to_cpu(buffer->raw_size)) + return -ENODATA; buffer_size = struct_size(buffer, raw_data, le32_to_cpu(buffer->raw_size)); if (buffer_size > output.length) { dev_warn(&wdev->dev, FW_WARN "Dell WMI buffer size (%zu) exceeds WMI buffer size (%zu)\n", buffer_size, output.length); - ret = -EMSGSIZE; - - goto err_free; + return -EMSGSIZE; } - *result = buffer; + *result = no_free_ptr(buffer); return 0; - -err_free: - kfree(output.data); - - return ret; } static ssize_t dell_wmi_ddv_query_string(struct wmi_device *wdev, enum dell_ddv_method method, |
