lkml.org 
[lkml]   [2024]   [Apr]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v7 13/16] power: sequencing: implement the pwrseq core
    On Wed, Apr 10, 2024 at 02:46:25PM +0200, Bartosz Golaszewski wrote:

    ..

    > +/**
    > + * pwrseq_device_register() - Register a new power sequencer.
    > + * @config: Configuration of the new power sequencing device.
    > + *
    > + * The config structure is only used during the call and can be freed after
    > + * the function returns. The config structure *must* have the parent device
    > + * as well as the match() callback and at least one target set.
    > + *
    > + * Returns:
    > + * Returns the address of the new pwrseq device or ERR_PTR() on failure.
    > + */
    > +struct pwrseq_device *
    > +pwrseq_device_register(const struct pwrseq_config *config)
    > +{
    > + struct pwrseq_device *pwrseq;
    > + int ret;
    > +
    > + if (!config->parent || !config->match || !config->targets ||
    > + !config->targets[0])
    > + return ERR_PTR(-EINVAL);
    > +
    > + pwrseq = kzalloc(sizeof(*pwrseq), GFP_KERNEL);
    > + if (!pwrseq)
    > + return ERR_PTR(-ENOMEM);
    > +
    > + pwrseq->dev.type = &pwrseq_device_type;
    > + pwrseq->dev.bus = &pwrseq_bus;
    > + pwrseq->dev.parent = config->parent;
    > + device_set_node(&pwrseq->dev, dev_fwnode(config->parent));
    > + dev_set_drvdata(&pwrseq->dev, config->drvdata);
    > +
    > + pwrseq->id = ida_alloc(&pwrseq_ida, GFP_KERNEL);
    > + if (pwrseq->id < 0) {
    > + kfree(pwrseq);

    Hi Bartosz,

    pwrseq is freed on the line above,
    so it should not be dereferenced on the line below.

    Flagged by Smatch.

    > + return ERR_PTR(pwrseq->id);
    > + }

    ..

    \
     
     \ /
      Last update: 2024-05-27 16:40    [W:4.791 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site