Re: [PATCH v2] tee: qcomtee: add missing va_end in early return qcomtee_object_user_init()

Jens Wiklander <[email protected]>
Newsgroups dev.linux.lists.linux-kernel-mentees,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel,org.trustedfirmware.lists.op-tee
Message-ID <CAHUa44GqBpYNxV8AHrj_r7u3cbcTA0xTB7Q2Nk=vbpnxDLnrTQ@mail.gmail.com>
Hi,

On Tue, May 19, 2026 at 4:05 AM Robertus Diawan Chris
<[email protected]> wrote:
>
> qcomtee_object_user_init() is a variadic function and when the function
> return because there's no dispatch callback in QCOMTEE_OBJECT_TYPE_CB
> case, there's no va_end to cleanup "ap" object initialized by va_start
> and that can cause undefined behavior. So make sure to use va_end before
> returning the error code when there's no dispatch callback.
>
> This is reported by Coverity Scan as "Missing varargs init or cleanup".
>
> Fixes: d6e290837e50 ("tee: add Qualcomm TEE driver")
> Signed-off-by: Robertus Diawan Chris <[email protected]>
> Reviewed-by: Amirreza Zarrabi <[email protected]>
> ---
> v1 -> v2:
> - Use "break" statement instead of "goto" statement. There's va_end
>   outside of switch-case, so we only need to go out from switch-case
>   instead of using a label (suggested by Amirreza Zarrabi).
> - Add "Reviewed-by" tag from Amirreza Zarrabi.
>
> v1:
> https://lore.kernel.org/all/[email protected]/
>
> I don't have the device, so I am not sure how to test this change.
> Thank you.
>
>  drivers/tee/qcomtee/core.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)

Looks good. I'm picking up this.

Cheers,
Jens


>
> diff --git a/drivers/tee/qcomtee/core.c b/drivers/tee/qcomtee/core.c
> index b1cb50e434f0..60fe3b5776e3 100644
> --- a/drivers/tee/qcomtee/core.c
> +++ b/drivers/tee/qcomtee/core.c
> @@ -306,8 +306,10 @@ int qcomtee_object_user_init(struct qcomtee_object *object,
>                 break;
>         case QCOMTEE_OBJECT_TYPE_CB:
>                 object->ops = ops;
> -               if (!object->ops->dispatch)
> -                       return -EINVAL;
> +               if (!object->ops->dispatch) {
> +                       ret = -EINVAL;
> +                       break;
> +               }
>
>                 /* If failed, "no-name". */
>                 object->name = kvasprintf_const(GFP_KERNEL, fmt, ap);
>
> base-commit: 5200f5f493f79f14bbdc349e402a40dfb32f23c8
> --
> 2.54.0
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.