diff options
| author | Tony Lindgren <tony@atomide.com> | 2021-07-27 11:25:08 +0300 |
|---|---|---|
| committer | Tony Lindgren <tony@atomide.com> | 2021-07-27 11:25:08 +0300 |
| commit | 353b7a55dcaf5fb8758e09ebe2ddf5f3adbac7c5 (patch) | |
| tree | 081200957b3d8925cbe913020d45a4e3ba61a7a3 /include/linux/devm-helpers.h | |
| parent | 3ff340e24c9dd5cff9fc07d67914c5adf67f80d6 (diff) | |
| parent | c68ef4ad180e09805fa46965d15e1dfadf09ffa5 (diff) | |
Merge branch 'fixes-v5.14' into fixes
Diffstat (limited to 'include/linux/devm-helpers.h')
| -rw-r--r-- | include/linux/devm-helpers.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/include/linux/devm-helpers.h b/include/linux/devm-helpers.h index f40f77717a24..74891802200d 100644 --- a/include/linux/devm-helpers.h +++ b/include/linux/devm-helpers.h @@ -51,4 +51,29 @@ static inline int devm_delayed_work_autocancel(struct device *dev, return devm_add_action(dev, devm_delayed_work_drop, w); } +static inline void devm_work_drop(void *res) +{ + cancel_work_sync(res); +} + +/** + * devm_work_autocancel - Resource-managed work allocation + * @dev: Device which lifetime work is bound to + * @w: Work to be added (and automatically cancelled) + * @worker: Worker function + * + * Initialize work which is automatically cancelled when driver is detached. + * A few drivers need to queue work which must be cancelled before driver + * is detached to avoid accessing removed resources. + * devm_work_autocancel() can be used to omit the explicit + * cancelleation when driver is detached. + */ +static inline int devm_work_autocancel(struct device *dev, + struct work_struct *w, + work_func_t worker) +{ + INIT_WORK(w, worker); + return devm_add_action(dev, devm_work_drop, w); +} + #endif |
