Re: [PATCH 0/2] btrfs: Prevent open-coded arithmetic on kmalloc

From: David Sterba

Date: Mon Sep 22 2025 - 06:34:45 EST


On Fri, Sep 19, 2025 at 04:58:14PM +0200, Miquel Sabaté Solà wrote:
> The second patch is a small cleanup after fixing up my first patch, in
> which I realized that the __free(kfree) attribute would come in handy in a
> couple of particularly large functions with multiple exit points. This
> second patch is probably more of a cosmetic thing, and it's not an
> exhaustive exercise by any means. All of this to say that even if I feel
> like it should be included, I don't mind if it has to be dropped.

Yes there are many candidates for the __free() cleanup annotation and
we'll want to fix them all systematically. We already have the automatic
cleaning for struct btrfs_path (BTRFS_PATH_AUTO_FREE). For the
kfree/kvfree I'd like to something similar:

#define AUTO_KFREE(name) *name __free(kfree) = NULL
#define AUTO_KVFREE(name) *name __free(kvfree) = NULL

This wraps the name and initializes it to NULL so it's not accidentally
forgotten.