]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Input: ff-memless - make use of __free() cleanup facility
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 7 Nov 2024 07:15:31 +0000 (23:15 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 24 Dec 2024 06:53:45 +0000 (22:53 -0800)
Annotate allocated memory with __free(kfree) to simplify the code and
make sure memory is released appropriately.

Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Link: https://lore.kernel.org/r/20241107071538.195340-5-dmitry.torokhov@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/ff-memless.c

index ec99c070a97ce5153bf33608bb570527f2d713da..e9120ba6bae02dc923e0191a9436552392cda61a 100644 (file)
@@ -503,12 +503,11 @@ static void ml_ff_destroy(struct ff_device *ff)
 int input_ff_create_memless(struct input_dev *dev, void *data,
                int (*play_effect)(struct input_dev *, void *, struct ff_effect *))
 {
-       struct ml_device *ml;
        struct ff_device *ff;
        int error;
        int i;
 
-       ml = kzalloc(sizeof(struct ml_device), GFP_KERNEL);
+       struct ml_device *ml __free(kfree) = kzalloc(sizeof(*ml), GFP_KERNEL);
        if (!ml)
                return -ENOMEM;
 
@@ -521,13 +520,10 @@ int input_ff_create_memless(struct input_dev *dev, void *data,
        set_bit(FF_GAIN, dev->ffbit);
 
        error = input_ff_create(dev, FF_MEMLESS_EFFECTS);
-       if (error) {
-               kfree(ml);
+       if (error)
                return error;
-       }
 
        ff = dev->ff;
-       ff->private = ml;
        ff->upload = ml_ff_upload;
        ff->playback = ml_ff_playback;
        ff->set_gain = ml_ff_set_gain;
@@ -544,6 +540,8 @@ int input_ff_create_memless(struct input_dev *dev, void *data,
        for (i = 0; i < FF_MEMLESS_EFFECTS; i++)
                ml->states[i].effect = &ff->effects[i];
 
+       ff->private = no_free_ptr(ml);
+
        return 0;
 }
 EXPORT_SYMBOL_GPL(input_ff_create_memless);