# \[PATCH 1/5\] Input: ambakmi - Convert to use devm\_\*()

- From: Russell King - ARM Linux \<linux@armlinux.org.uk\>
- Date: 2017-03-26 14:50:56 
- List: linux-arm-kernel
- Page: https://ratatoskr.run/linux-arm-kernel/2017/03/4963555
- Thread: https://ratatoskr.run/linux-input/2017/03/4963551/t.md

```text
On Sun, Mar 26, 2017 at 10:41:50PM +0800, Leo Yan wrote:
> Convert driver to use devm_*() APIs so rely on driver model core layer
> to manage resources. This eliminates error path boilerplate and makes
> code neat.
> 
> This patch also fixes the memory leakage for 'kmi->io' when remove
> module.

No, it is not leaked, in fact, your patch introduces a use-after-free
bug.

kmi->io is of type "struct serio", and this structure has an embedded
"struct device".  The lifetime of any structure containing a "struct
device" is controlled by the lifetime of the struct device.

Once serio_register_port() has been called on it, it is up to the
serio layer to free this structure.

Therefore, your patch creates a bug, and so it gets a NAK.  There is no
resource leakage here.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
```
