From e12592158515831e5ff6e80a36a4d05ceaf22908 Mon Sep 17 00:00:00 2001 From: Stefan Wahren Date: Sun, 23 Jan 2022 21:02:23 +0100 Subject: [PATCH] staging: vchiq_dev: Avoid unnecessary alloc in vchiq_ioc_create_service There is no need to allocate the user service in case there is a VCHIQ connection required, but not available. So simply check the error conditions before doing an expensive memory allocation. Reviewed-by: Nicolas Saenz Julienne Signed-off-by: Stefan Wahren Link: https://lore.kernel.org/r/1642968143-19281-19-git-send-email-stefan.wahren@i2se.com Signed-off-by: Greg Kroah-Hartman --- .../staging/vc04_services/interface/vchiq_arm/vchiq_dev.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c index 2325844b08806..b41c2a2673550 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_dev.c @@ -146,15 +146,14 @@ static int vchiq_ioc_create_service(struct vchiq_instance *instance, struct vchiq_service_params_kernel params; int srvstate; + if (args->is_open && !instance->connected) + return -ENOTCONN; + user_service = kmalloc(sizeof(*user_service), GFP_KERNEL); if (!user_service) return -ENOMEM; if (args->is_open) { - if (!instance->connected) { - kfree(user_service); - return -ENOTCONN; - } srvstate = VCHIQ_SRVSTATE_OPENING; } else { srvstate = instance->connected ? -- 2.30.2