mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 11:06:41 -05:00
pwm: Export pwmchip_release for external use
The upcoming Rust abstraction layer for the PWM subsystem uses a custom `dev->release` handler to safely manage the lifetime of its driver data. To prevent leaking the memory of the `struct pwm_chip` (allocated by `pwmchip_alloc`), this custom handler must also call the original `pwmchip_release` function to complete the cleanup. Make `pwmchip_release` a global, exported function so that it can be called from the Rust FFI bridge. This involves removing the `static` keyword, adding a prototype to the public header, and exporting the symbol. Reviewed-by: Elle Rhumsaa <elle@weathered-steel.dev> Signed-off-by: Michal Wilczynski <m.wilczynski@samsung.com> Link: https://patch.msgid.link/20251016-rust-next-pwm-working-fan-for-sending-v16-1-a5df2405d2bd@samsung.com Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
This commit is contained in:
committed by
Uwe Kleine-König
parent
739ad9be61
commit
ce284f8820
@@ -1608,12 +1608,13 @@ void pwmchip_put(struct pwm_chip *chip)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pwmchip_put);
|
||||
|
||||
static void pwmchip_release(struct device *pwmchip_dev)
|
||||
void pwmchip_release(struct device *pwmchip_dev)
|
||||
{
|
||||
struct pwm_chip *chip = pwmchip_from_dev(pwmchip_dev);
|
||||
|
||||
kfree(chip);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pwmchip_release);
|
||||
|
||||
struct pwm_chip *pwmchip_alloc(struct device *parent, unsigned int npwm, size_t sizeof_priv)
|
||||
{
|
||||
|
||||
@@ -488,6 +488,12 @@ int __pwmchip_add(struct pwm_chip *chip, struct module *owner);
|
||||
#define pwmchip_add(chip) __pwmchip_add(chip, THIS_MODULE)
|
||||
void pwmchip_remove(struct pwm_chip *chip);
|
||||
|
||||
/*
|
||||
* For FFI wrapper use only:
|
||||
* The Rust PWM abstraction needs this to properly free the pwm_chip.
|
||||
*/
|
||||
void pwmchip_release(struct device *dev);
|
||||
|
||||
int __devm_pwmchip_add(struct device *dev, struct pwm_chip *chip, struct module *owner);
|
||||
#define devm_pwmchip_add(dev, chip) __devm_pwmchip_add(dev, chip, THIS_MODULE)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user