[Ksummit-discuss] [TECH TOPIC] Fix devm_kzalloc, its users, or both
Julia Lawall
julia.lawall at lip6.fr
Tue Aug 4 18:03:12 UTC 2015
On Tue, 4 Aug 2015, Dmitry Torokhov wrote:
>
>
> On Tue, Aug 4, 2015 at 5:55 AM, Dan Carpenter <dan.carpenter at oracle.com>
> wrote:
> On Sat, Aug 01, 2015 at 01:21:09PM +0200, Julia Lawall wrote:
> > Currently, is there any documentation about when these
> functions can be
> > used? All I remember seeing is a discussion of what the
> functions do and
> > what functions are available. But nothing about when they
> should and
> > should not be used.
> >
>
> The documentation for devm_kmalloc() doesn't list common
> pitfalls. The
> other big one which should be obvious, but happens often is
> freeing
> devm_ memory with kfree().
>
> /**
> * devm_kmalloc - Resource-managed kmalloc
> * @dev: Device to allocate memory for
> * @size: Allocation size
> * @gfp: Allocation gfp flags
> *
> * Managed kmalloc. Memory allocated with this function is
> * automatically freed on driver detach. Like all other devres
> * resources, guaranteed alignment is unsigned long long.
> *
> * RETURNS:
> * Pointer to allocated memory on success, NULL on failure.
> */
>
>
> I wonder if it would be possible to note that the current thread is going
> through probe() or remove() code path in driver core and scream if we
> encounter devm* call outside of such path. That will give false positives in
> cases when there is a legitimate mix of automatic and manual resource
> management (i.e. you rely on automatic cleanup in probe()/remove() but need
> to free/reallocate object somewhere else), but we can create another call
> for that.
This seems easy to do with Coccinelle, at least with respect to the
functions in a single file. I guess it doesn't solve the file operations
problem, though?
julia
More information about the Ksummit-discuss
mailing list