* [PATCH v2 0/2] platform/x86: thinkpad_acpi: cleanup conversions
@ 2026-09-30 4:59 Dmitry Torokhov
2026-09-30 4:59 ` [PATCH v2 1/2] platform/x86: thinkpad_acpi: convert conditional mutex locks to ACQUIRE_ERR() Dmitry Torokhov
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Dmitry Torokhov @ 2026-09-30 4:59 UTC (permalink / raw)
To: Mark Pearson, Derek J. Clark
Cc: Henrique de Moraes Holschuh, Hans de Goede, Ilpo Järvinen,
Nitin Joshi, platform-driver-x86, ibm-acpi-devel, linux-kernel,
Ali Ahmet Memiş
This series converts thinkpad_acpi resource management to use helpers
from linux/cleanup.h:
- Convert conditional mutex lock calls to ACQUIRE() and ACQUIRE_ERR()
- Use __free(kfree) for local pointer allocations
Changes in v2:
- Dropped patch 1 ("convert mutex_lock() to guard(mutex)") as it was
already applied upstream.
- Preserved 0 return value on failure in brightness_get().
- Fixed auxmac_init() to avoid setting auxmac to "unavailable" before
evaluating the MACA ACPI method.
- Collected Reviewed-by and Tested-by trailers.
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
Dmitry Torokhov (2):
platform/x86: thinkpad_acpi: convert conditional mutex locks to ACQUIRE_ERR()
platform/x86: thinkpad_acpi: use __free(kfree) for automatic cleanup
drivers/platform/x86/lenovo/thinkpad_acpi.c | 190 +++++++++++++---------------
1 file changed, 87 insertions(+), 103 deletions(-)
---
base-commit: 6474fa070f2b8013b4b87350b775b8c3be6e8aac
change-id: 20260929-thinkpad-acpi-cleanup-8d4e7264690d
Thanks.
--
Dmitry
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/2] platform/x86: thinkpad_acpi: convert conditional mutex locks to ACQUIRE_ERR()
2026-09-30 4:59 [PATCH v2 0/2] platform/x86: thinkpad_acpi: cleanup conversions Dmitry Torokhov
@ 2026-09-30 4:59 ` Dmitry Torokhov
2026-09-30 4:59 ` [PATCH v2 2/2] platform/x86: thinkpad_acpi: use __free(kfree) for automatic cleanup Dmitry Torokhov
2026-10-05 18:51 ` [PATCH v2 0/2] platform/x86: thinkpad_acpi: cleanup conversions Ilpo Järvinen
2 siblings, 0 replies; 4+ messages in thread
From: Dmitry Torokhov @ 2026-09-30 4:59 UTC (permalink / raw)
To: Mark Pearson, Derek J. Clark
Cc: Henrique de Moraes Holschuh, Hans de Goede, Ilpo Järvinen,
Nitin Joshi, platform-driver-x86, ibm-acpi-devel, linux-kernel,
Ali Ahmet Memiş
Convert conditional mutex_lock_killable() and mutex_lock_interruptible()
calls to ACQUIRE() and ACQUIRE_ERR() from linux/cleanup.h.
This eliminates explicit mutex_unlock() calls on return paths and
simplifies error handling across hotkey, brightness, volume, fan, and
dytc functions.
Assisted-by: LLM
Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Tested-by: Ali Ahmet Memiş <aliamemis@disroot.org>
Tested-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
drivers/platform/x86/lenovo/thinkpad_acpi.c | 148 ++++++++++++++--------------
1 file changed, 73 insertions(+), 75 deletions(-)
diff --git a/drivers/platform/x86/lenovo/thinkpad_acpi.c b/drivers/platform/x86/lenovo/thinkpad_acpi.c
index 1225b01ed14d..645df773fe63 100644
--- a/drivers/platform/x86/lenovo/thinkpad_acpi.c
+++ b/drivers/platform/x86/lenovo/thinkpad_acpi.c
@@ -2676,8 +2676,10 @@ static ssize_t hotkey_mask_store(struct device *dev,
if (parse_strtoul(buf, 0xffffffffUL, &t))
return -EINVAL;
- if (mutex_lock_killable(&hotkey_mutex))
- return -ERESTARTSYS;
+ ACQUIRE(mutex_kill, guard)(&hotkey_mutex);
+ res = ACQUIRE_ERR(mutex_kill, &guard);
+ if (res)
+ return res;
res = hotkey_user_mask_set(t);
@@ -2685,8 +2687,6 @@ static ssize_t hotkey_mask_store(struct device *dev,
hotkey_poll_setup(true);
#endif
- mutex_unlock(&hotkey_mutex);
-
tpacpi_disclose_usertask("hotkey_mask", "set to 0x%08lx\n", t);
return (res) ? res : count;
@@ -2772,8 +2772,10 @@ static ssize_t hotkey_source_mask_store(struct device *dev,
((t & ~TPACPI_HKEY_NVRAM_KNOWN_MASK) != 0))
return -EINVAL;
- if (mutex_lock_killable(&hotkey_mutex))
- return -ERESTARTSYS;
+ ACQUIRE(mutex_kill, guard)(&hotkey_mutex);
+ rc = ACQUIRE_ERR(mutex_kill, &guard);
+ if (rc)
+ return rc;
HOTKEY_CONFIG_CRITICAL_START
hotkey_source_mask = t;
@@ -2787,8 +2789,6 @@ static ssize_t hotkey_source_mask_store(struct device *dev,
r_ev = hotkey_driver_mask & ~(hotkey_acpi_mask & hotkey_all_mask)
& ~hotkey_source_mask & TPACPI_HKEY_NVRAM_KNOWN_MASK;
- mutex_unlock(&hotkey_mutex);
-
if (rc < 0)
pr_err("hotkey_source_mask: failed to update the firmware event mask!\n");
@@ -2816,18 +2816,19 @@ static ssize_t hotkey_poll_freq_store(struct device *dev,
const char *buf, size_t count)
{
unsigned long t;
+ int err;
if (parse_strtoul(buf, 25, &t))
return -EINVAL;
- if (mutex_lock_killable(&hotkey_mutex))
- return -ERESTARTSYS;
+ ACQUIRE(mutex_kill, guard)(&hotkey_mutex);
+ err = ACQUIRE_ERR(mutex_kill, &guard);
+ if (err)
+ return err;
hotkey_poll_set_freq(t);
hotkey_poll_setup(true);
- mutex_unlock(&hotkey_mutex);
-
tpacpi_disclose_usertask("hotkey_poll_freq", "set to %lu\n", t);
return count;
@@ -4066,12 +4067,13 @@ static int hotkey_read(struct seq_file *m)
return 0;
}
- if (mutex_lock_killable(&hotkey_mutex))
- return -ERESTARTSYS;
+ ACQUIRE(mutex_kill, guard)(&hotkey_mutex);
+ res = ACQUIRE_ERR(mutex_kill, &guard);
+ if (res)
+ return res;
res = hotkey_status_get(&status);
if (!res)
res = hotkey_mask_get();
- mutex_unlock(&hotkey_mutex);
if (res)
return res;
@@ -4104,8 +4106,10 @@ static int hotkey_write(char *buf)
if (!tp_features.hotkey)
return -ENODEV;
- if (mutex_lock_killable(&hotkey_mutex))
- return -ERESTARTSYS;
+ ACQUIRE(mutex_kill, guard)(&hotkey_mutex);
+ res = ACQUIRE_ERR(mutex_kill, &guard);
+ if (res)
+ return res;
mask = hotkey_user_mask;
@@ -4124,8 +4128,7 @@ static int hotkey_write(char *buf)
} else if (sscanf(cmd, "%x", &mask) == 1) {
/* mask set */
} else {
- res = -EINVAL;
- goto errexit;
+ return -EINVAL;
}
}
@@ -4135,8 +4138,6 @@ static int hotkey_write(char *buf)
res = hotkey_user_mask_set(mask);
}
-errexit:
- mutex_unlock(&hotkey_mutex);
return res;
}
@@ -6544,11 +6545,12 @@ static void tpacpi_brightness_checkpoint_nvram(void)
vdbg_printk(TPACPI_DBG_BRGHT,
"trying to checkpoint backlight level to NVRAM...\n");
- if (mutex_lock_killable(&brightness_mutex) < 0)
+ ACQUIRE(mutex_kill, guard)(&brightness_mutex);
+ if (ACQUIRE_ERR(mutex_kill, &guard))
return;
if (unlikely(!acpi_ec_read(TP_EC_BACKLIGHT, &lec)))
- goto unlock;
+ return;
lec &= TP_EC_BACKLIGHT_LVLMSK;
b_nvram = nvram_read_byte(TP_NVRAM_ADDR_BRIGHTNESS);
@@ -6566,9 +6568,6 @@ static void tpacpi_brightness_checkpoint_nvram(void)
vdbg_printk(TPACPI_DBG_BRGHT,
"NVRAM backlight level already is %u (0x%02x)\n",
(unsigned int) lec, (unsigned int) b_nvram);
-
-unlock:
- mutex_unlock(&brightness_mutex);
}
@@ -6646,8 +6645,9 @@ static int brightness_set(unsigned int value)
vdbg_printk(TPACPI_DBG_BRGHT,
"set backlight level to %d\n", value);
- res = mutex_lock_killable(&brightness_mutex);
- if (res < 0)
+ ACQUIRE(mutex_kill, guard)(&brightness_mutex);
+ res = ACQUIRE_ERR(mutex_kill, &guard);
+ if (res)
return res;
switch (brightness_mode) {
@@ -6662,7 +6662,6 @@ static int brightness_set(unsigned int value)
res = -ENXIO;
}
- mutex_unlock(&brightness_mutex);
return res;
}
@@ -6685,14 +6684,11 @@ static int brightness_get(struct backlight_device *bd)
{
int status, res;
- res = mutex_lock_killable(&brightness_mutex);
- if (res < 0)
+ ACQUIRE(mutex_kill, guard)(&brightness_mutex);
+ if (ACQUIRE_ERR(mutex_kill, &guard))
return 0;
res = tpacpi_brightness_get_raw(&status);
-
- mutex_unlock(&brightness_mutex);
-
if (res < 0)
return 0;
@@ -7157,11 +7153,12 @@ static void tpacpi_volume_checkpoint_nvram(void)
else
ec_mask = TP_EC_AUDIO_MUTESW_MSK | TP_EC_AUDIO_LVL_MSK;
- if (mutex_lock_killable(&volume_mutex) < 0)
+ ACQUIRE(mutex_kill, guard)(&volume_mutex);
+ if (ACQUIRE_ERR(mutex_kill, &guard))
return;
if (unlikely(!acpi_ec_read(TP_EC_AUDIO, &lec)))
- goto unlock;
+ return;
lec &= ec_mask;
b_nvram = nvram_read_byte(TP_NVRAM_ADDR_MIXER);
@@ -7178,9 +7175,6 @@ static void tpacpi_volume_checkpoint_nvram(void)
"NVRAM mixer status already is 0x%02x (0x%02x)\n",
(unsigned int) lec, (unsigned int) b_nvram);
}
-
-unlock:
- mutex_unlock(&volume_mutex);
}
static int volume_get_status_ec(u8 *status)
@@ -7229,12 +7223,14 @@ static int __volume_set_mute_ec(const bool mute)
int rc;
u8 s, n;
- if (mutex_lock_killable(&volume_mutex) < 0)
- return -EINTR;
+ ACQUIRE(mutex_kill, guard)(&volume_mutex);
+ rc = ACQUIRE_ERR(mutex_kill, &guard);
+ if (rc)
+ return rc;
rc = volume_get_status_ec(&s);
if (rc)
- goto unlock;
+ return rc;
n = (mute) ? s | TP_EC_AUDIO_MUTESW_MSK :
s & ~TP_EC_AUDIO_MUTESW_MSK;
@@ -7245,8 +7241,6 @@ static int __volume_set_mute_ec(const bool mute)
rc = 1;
}
-unlock:
- mutex_unlock(&volume_mutex);
return rc;
}
@@ -7277,12 +7271,14 @@ static int __volume_set_volume_ec(const u8 vol)
if (vol > TP_EC_VOLUME_MAX)
return -EINVAL;
- if (mutex_lock_killable(&volume_mutex) < 0)
- return -EINTR;
+ ACQUIRE(mutex_kill, guard)(&volume_mutex);
+ rc = ACQUIRE_ERR(mutex_kill, &guard);
+ if (rc)
+ return rc;
rc = volume_get_status_ec(&s);
if (rc)
- goto unlock;
+ return rc;
n = (s & ~TP_EC_AUDIO_LVL_MSK) | vol;
@@ -7292,8 +7288,6 @@ static int __volume_set_volume_ec(const u8 vol)
rc = 1;
}
-unlock:
- mutex_unlock(&volume_mutex);
return rc;
}
@@ -8197,13 +8191,14 @@ static int fan_get_status_safe(u8 *status)
int rc;
u8 s;
- if (mutex_lock_killable(&fan_mutex))
- return -ERESTARTSYS;
+ ACQUIRE(mutex_kill, guard)(&fan_mutex);
+ rc = ACQUIRE_ERR(mutex_kill, &guard);
+ if (rc)
+ return rc;
rc = fan_get_status(&s);
/* NS EC doesn't have register with level settings */
if (!rc && !fan_with_ns_addr)
fan_update_desired_level(s);
- mutex_unlock(&fan_mutex);
if (rc)
return rc;
@@ -8396,8 +8391,10 @@ static int fan_set_level_safe(int level)
if (!fan_control_allowed)
return -EPERM;
- if (mutex_lock_killable(&fan_mutex))
- return -ERESTARTSYS;
+ ACQUIRE(mutex_kill, guard)(&fan_mutex);
+ rc = ACQUIRE_ERR(mutex_kill, &guard);
+ if (rc)
+ return rc;
if (level == TPACPI_FAN_LAST_LEVEL)
level = fan_control_desired_level;
@@ -8406,7 +8403,6 @@ static int fan_set_level_safe(int level)
if (!rc)
fan_update_desired_level(level);
- mutex_unlock(&fan_mutex);
return rc;
}
@@ -8418,8 +8414,10 @@ static int fan_set_enable(void)
if (!fan_control_allowed)
return -EPERM;
- if (mutex_lock_killable(&fan_mutex))
- return -ERESTARTSYS;
+ ACQUIRE(mutex_kill, guard)(&fan_mutex);
+ rc = ACQUIRE_ERR(mutex_kill, &guard);
+ if (rc)
+ return rc;
switch (fan_control_access_mode) {
case TPACPI_FAN_WR_ACPI_FANS:
@@ -8475,8 +8473,6 @@ static int fan_set_enable(void)
rc = -ENXIO;
}
- mutex_unlock(&fan_mutex);
-
if (!rc)
vdbg_printk(TPACPI_DBG_FAN,
"fan control: set fan control register to 0x%02x\n",
@@ -8491,8 +8487,10 @@ static int fan_set_disable(void)
if (!fan_control_allowed)
return -EPERM;
- if (mutex_lock_killable(&fan_mutex))
- return -ERESTARTSYS;
+ ACQUIRE(mutex_kill, guard)(&fan_mutex);
+ rc = ACQUIRE_ERR(mutex_kill, &guard);
+ if (rc)
+ return rc;
rc = 0;
switch (fan_control_access_mode) {
@@ -8537,7 +8535,6 @@ static int fan_set_disable(void)
vdbg_printk(TPACPI_DBG_FAN,
"fan control: set fan control register to 0\n");
- mutex_unlock(&fan_mutex);
return rc;
}
@@ -8548,8 +8545,10 @@ static int fan_set_speed(int speed)
if (!fan_control_allowed)
return -EPERM;
- if (mutex_lock_killable(&fan_mutex))
- return -ERESTARTSYS;
+ ACQUIRE(mutex_kill, guard)(&fan_mutex);
+ rc = ACQUIRE_ERR(mutex_kill, &guard);
+ if (rc)
+ return rc;
rc = 0;
switch (fan_control_access_mode) {
@@ -8583,7 +8582,6 @@ static int fan_set_speed(int speed)
rc = -ENXIO;
}
- mutex_unlock(&fan_mutex);
return rc;
}
@@ -8743,8 +8741,10 @@ static ssize_t fan_pwm1_store(struct device *dev,
/* scale down from 0-255 to 0-7 */
newlevel = (s >> 5) & 0x07;
- if (mutex_lock_killable(&fan_mutex))
- return -ERESTARTSYS;
+ ACQUIRE(mutex_kill, guard)(&fan_mutex);
+ rc = ACQUIRE_ERR(mutex_kill, &guard);
+ if (rc)
+ return rc;
rc = fan_get_status(&status);
if (!rc && (status &
@@ -8758,7 +8758,6 @@ static ssize_t fan_pwm1_store(struct device *dev,
}
}
- mutex_unlock(&fan_mutex);
return (rc) ? rc : count;
}
@@ -10609,13 +10608,14 @@ static int dytc_profile_set(struct device *dev,
int output;
int err;
- err = mutex_lock_interruptible(&dytc_mutex);
+ ACQUIRE(mutex_intr, guard)(&dytc_mutex);
+ err = ACQUIRE_ERR(mutex_intr, &guard);
if (err)
return err;
err = convert_profile_to_dytc(profile, &perfmode);
if (err)
- goto unlock;
+ return err;
if (dytc_capabilities & BIT(DYTC_FC_MMC)) {
if (profile == PLATFORM_PROFILE_BALANCED) {
@@ -10627,18 +10627,18 @@ static int dytc_profile_set(struct device *dev,
*/
err = dytc_cql_command(DYTC_CMD_RESET, &output);
if (err)
- goto unlock;
+ return err;
} else {
/* Determine if we are in CQL mode. This alters the commands we do */
err = dytc_cql_command(DYTC_SET_COMMAND(DYTC_FUNCTION_MMC, perfmode, 1),
&output);
if (err)
- goto unlock;
+ return err;
}
} else if (dytc_capabilities & BIT(DYTC_FC_PSC)) {
err = dytc_command(DYTC_SET_COMMAND(DYTC_FUNCTION_PSC, perfmode, 1), &output);
if (err)
- goto unlock;
+ return err;
/* system supports AMT, activate it when on balanced */
if (dytc_capabilities & BIT(DYTC_FC_AMT))
@@ -10646,8 +10646,6 @@ static int dytc_profile_set(struct device *dev,
}
/* Success - update current profile */
dytc_current_profile = profile;
-unlock:
- mutex_unlock(&dytc_mutex);
return err;
}
--
2.56.0.rc1.315.gc6ed9934b7-goog
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 2/2] platform/x86: thinkpad_acpi: use __free(kfree) for automatic cleanup
2026-09-30 4:59 [PATCH v2 0/2] platform/x86: thinkpad_acpi: cleanup conversions Dmitry Torokhov
2026-09-30 4:59 ` [PATCH v2 1/2] platform/x86: thinkpad_acpi: convert conditional mutex locks to ACQUIRE_ERR() Dmitry Torokhov
@ 2026-09-30 4:59 ` Dmitry Torokhov
2026-10-05 18:51 ` [PATCH v2 0/2] platform/x86: thinkpad_acpi: cleanup conversions Ilpo Järvinen
2 siblings, 0 replies; 4+ messages in thread
From: Dmitry Torokhov @ 2026-09-30 4:59 UTC (permalink / raw)
To: Mark Pearson, Derek J. Clark
Cc: Henrique de Moraes Holschuh, Hans de Goede, Ilpo Järvinen,
Nitin Joshi, platform-driver-x86, ibm-acpi-devel, linux-kernel,
Ali Ahmet Memiş
Use __free(kfree) for local pointer allocations in
dispatch_proc_write(), tpacpi_evaluate_bcl(), and auxmac_init().
This ensures automatic memory cleanup when exiting function scope and
removes explicit kfree() calls on exit paths.
Assisted-by: LLM
Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Tested-by: Ali Ahmet Memiş <aliamemis@disroot.org>
Tested-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
drivers/platform/x86/lenovo/thinkpad_acpi.c | 42 ++++++++++-------------------
1 file changed, 14 insertions(+), 28 deletions(-)
diff --git a/drivers/platform/x86/lenovo/thinkpad_acpi.c b/drivers/platform/x86/lenovo/thinkpad_acpi.c
index 645df773fe63..93fc69a7dd63 100644
--- a/drivers/platform/x86/lenovo/thinkpad_acpi.c
+++ b/drivers/platform/x86/lenovo/thinkpad_acpi.c
@@ -891,7 +891,6 @@ static ssize_t dispatch_proc_write(struct file *file,
size_t count, loff_t *pos)
{
struct ibm_struct *ibm = pde_data(file_inode(file));
- char *kernbuf;
int ret;
if (!ibm || !ibm->write)
@@ -899,16 +898,15 @@ static ssize_t dispatch_proc_write(struct file *file,
if (count > PAGE_SIZE - 1)
return -EINVAL;
- kernbuf = memdup_user_nul(userbuf, count);
+ char *kernbuf __free(kfree) = memdup_user_nul(userbuf, count);
if (IS_ERR(kernbuf))
return PTR_ERR(kernbuf);
- ret = ibm->write(kernbuf);
- if (ret == 0)
- ret = count;
- kfree(kernbuf);
+ ret = ibm->write(kernbuf);
+ if (ret)
+ return ret;
- return ret;
+ return count;
}
static const struct proc_ops dispatch_proc_ops = {
@@ -6711,26 +6709,21 @@ static const struct backlight_ops ibm_backlight_data = {
static int __init tpacpi_evaluate_bcl(struct acpi_device *adev, void *not_used)
{
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
- union acpi_object *obj;
acpi_status status;
- int rc;
status = acpi_evaluate_object(adev->handle, "_BCL", NULL, &buffer);
if (ACPI_FAILURE(status))
return 0;
- obj = buffer.pointer;
+ union acpi_object *obj __free(kfree) = buffer.pointer;
if (!obj || obj->type != ACPI_TYPE_PACKAGE) {
acpi_handle_info(adev->handle,
"Unknown _BCL data, please report this to %s\n",
TPACPI_MAIL);
- rc = 0;
- } else {
- rc = obj->package.count;
+ return 0;
}
- kfree(obj);
- return rc;
+ return obj->package.count;
}
/*
@@ -11075,24 +11068,23 @@ static int auxmac_init(struct ibm_init_struct *iibm)
{
acpi_status status;
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
- union acpi_object *obj;
status = acpi_evaluate_object(NULL, "\\MACA", NULL, &buffer);
-
if (ACPI_FAILURE(status))
return -ENODEV;
- obj = buffer.pointer;
-
- if (obj->type != ACPI_TYPE_STRING || obj->string.length != AUXMAC_STRLEN) {
+ union acpi_object *obj __free(kfree) = buffer.pointer;
+ if (!obj || obj->type != ACPI_TYPE_STRING || obj->string.length != AUXMAC_STRLEN) {
pr_info("Invalid buffer for MAC address pass-through.\n");
- goto auxmacinvalid;
+ strscpy(auxmac, "unavailable", sizeof(auxmac));
+ return 0;
}
if (obj->string.pointer[AUXMAC_BEGIN_MARKER] != '#' ||
obj->string.pointer[AUXMAC_END_MARKER] != '#') {
pr_info("Invalid header for MAC address pass-through.\n");
- goto auxmacinvalid;
+ strscpy(auxmac, "unavailable", sizeof(auxmac));
+ return 0;
}
if (strncmp(obj->string.pointer + AUXMAC_START, "XXXXXXXXXXXX", AUXMAC_LEN) != 0)
@@ -11100,13 +11092,7 @@ static int auxmac_init(struct ibm_init_struct *iibm)
else
strscpy(auxmac, "disabled", sizeof(auxmac));
-free:
- kfree(obj);
return 0;
-
-auxmacinvalid:
- strscpy(auxmac, "unavailable", sizeof(auxmac));
- goto free;
}
static struct ibm_struct auxmac_data = {
--
2.56.0.rc1.315.gc6ed9934b7-goog
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 0/2] platform/x86: thinkpad_acpi: cleanup conversions
2026-09-30 4:59 [PATCH v2 0/2] platform/x86: thinkpad_acpi: cleanup conversions Dmitry Torokhov
2026-09-30 4:59 ` [PATCH v2 1/2] platform/x86: thinkpad_acpi: convert conditional mutex locks to ACQUIRE_ERR() Dmitry Torokhov
2026-09-30 4:59 ` [PATCH v2 2/2] platform/x86: thinkpad_acpi: use __free(kfree) for automatic cleanup Dmitry Torokhov
@ 2026-10-05 18:51 ` Ilpo Järvinen
2 siblings, 0 replies; 4+ messages in thread
From: Ilpo Järvinen @ 2026-10-05 18:51 UTC (permalink / raw)
To: Mark Pearson, Derek J. Clark, Dmitry Torokhov
Cc: Henrique de Moraes Holschuh, Hans de Goede, Nitin Joshi,
platform-driver-x86, ibm-acpi-devel, linux-kernel,
Ali Ahmet Memiş
On Tue, 29 Sep 2026 21:59:09 -0700, Dmitry Torokhov wrote:
> This series converts thinkpad_acpi resource management to use helpers
> from linux/cleanup.h:
> - Convert conditional mutex lock calls to ACQUIRE() and ACQUIRE_ERR()
> - Use __free(kfree) for local pointer allocations
>
> Changes in v2:
> - Dropped patch 1 ("convert mutex_lock() to guard(mutex)") as it was
> already applied upstream.
> - Preserved 0 return value on failure in brightness_get().
> - Fixed auxmac_init() to avoid setting auxmac to "unavailable" before
> evaluating the MACA ACPI method.
> - Collected Reviewed-by and Tested-by trailers.
>
> [...]
Thank you for your contribution, it has been applied to my local
review-ilpo-next branch. Note it will show up in the public
platform-drivers-x86/review-ilpo-next branch only once I've pushed my
local branch there, which might take a while.
FYI [if applicable to your patch], as per Linus' policy change, also
fixes are mostly routed through for-next unless the fix is for a
commit introduced in the most recent cycle or is clearly a regression
fix.
The list of commits applied:
[1/2] platform/x86: thinkpad_acpi: convert conditional mutex locks to ACQUIRE_ERR()
commit: 86cab001301c4c65e6763282ca9a477dc1fc4e72
[2/2] platform/x86: thinkpad_acpi: use __free(kfree) for automatic cleanup
commit: 40da5fbf461e4cefa45aa259b0771449597d3135
--
i.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-10-05 18:52 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-30 4:59 [PATCH v2 0/2] platform/x86: thinkpad_acpi: cleanup conversions Dmitry Torokhov
2026-09-30 4:59 ` [PATCH v2 1/2] platform/x86: thinkpad_acpi: convert conditional mutex locks to ACQUIRE_ERR() Dmitry Torokhov
2026-09-30 4:59 ` [PATCH v2 2/2] platform/x86: thinkpad_acpi: use __free(kfree) for automatic cleanup Dmitry Torokhov
2026-10-05 18:51 ` [PATCH v2 0/2] platform/x86: thinkpad_acpi: cleanup conversions Ilpo Järvinen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®