From patchwork Thu Aug 24 08:23:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ganapati Kundapura X-Patchwork-Id: 130699 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7E71E430EE; Thu, 24 Aug 2023 10:23:37 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 68ED5410EE; Thu, 24 Aug 2023 10:23:37 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id 316D540EE1 for ; Thu, 24 Aug 2023 10:23:36 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1692865416; x=1724401416; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=3iieovh9MxLHMsWLhl5rxkfCZcZJNDpopFHCbdRiX9Q=; b=lrmKw1I2LO7FLGY/AEOHAiuZu7x1jaIVbPvlBNMmMI8S7y6JzTBQCrdR 8hW8m2FeK61PNnsA0PrfK3ZSZUq5Nd7yq/2Oip0GIi460JXyF2VzQp7J6 dpavE2lSZtB7SyPLRH8DOvdpPeqw3lqMRaw/X5HgYCxckC926VVuEXVdc NweepRs9my1lpbAc1jGzGFtmyGxCO+BOrOFsaF+3KDwVgB4UIvuAn3Flb 5i8AzLP/IESsN8NfNmybNgxWuaaPlcyliQzsmXZifdWzTNyN47wDUzDXA 5T0eVVYxLtZOWPILOYbZuofAWBN70SfuvyYD7XzyniDrsre5b1VoZgVOz Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10811"; a="373262135" X-IronPort-AV: E=Sophos;i="6.01,195,1684825200"; d="scan'208";a="373262135" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Aug 2023 01:23:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10811"; a="740082286" X-IronPort-AV: E=Sophos;i="6.01,195,1684825200"; d="scan'208";a="740082286" Received: from txandevlnx322.an.intel.com ([10.123.117.44]) by fmsmga007.fm.intel.com with ESMTP; 24 Aug 2023 01:23:34 -0700 From: Ganapati Kundapura To: jerinj@marvell.com, s.v.naga.harish.k@intel.com, dev@dpdk.org Cc: jay.jayatheerthan@intel.com, abhinandan.gujjar@intel.com Subject: [PATCH v1] eventdev/eth_rx: fix null pointer dereference Date: Thu, 24 Aug 2023 03:23:31 -0500 Message-Id: <20230824082331.713236-1-ganapati.kundapura@intel.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On passing NULL as a last parameter to xxx_create_ext_with_params(), rxa_config_params_validate() uses default values and dereferences NULL pointer leading to segmentation fault. Fixed by returning after using default values without dereferencing NULL pointer. Fixes: 8be6c94d6d90 ("eventdev/eth_rx: add new adapter create API") Signed-off-by: Ganapati Kundapura Acked-by: Naga Harish K S V diff --git a/app/test/test_event_eth_rx_adapter.c b/app/test/test_event_eth_rx_adapter.c index 2d5e197666..0233c87779 100644 --- a/app/test/test_event_eth_rx_adapter.c +++ b/app/test/test_event_eth_rx_adapter.c @@ -407,6 +407,12 @@ adapter_create(void) return err; } +static void +adapter_free(void) +{ + rte_event_eth_rx_adapter_free(TEST_INST_ID); +} + static int adapter_create_with_params(void) { @@ -427,6 +433,13 @@ adapter_create_with_params(void) rxa_params.use_queue_event_buf = false; rxa_params.event_buf_size = 0; + /* Pass rxa_params = NULL */ + err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID, + TEST_DEV_ID, &rx_p_conf, NULL); + TEST_ASSERT(err == 0, "Expected 0 got %d", err); + if (err == 0) + adapter_free(); + err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID, TEST_DEV_ID, &rx_p_conf, &rxa_params); TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err); @@ -512,6 +525,13 @@ adapter_create_ext_with_params(void) rxa_params.use_queue_event_buf = false; rxa_params.event_buf_size = 0; + /* Pass rxa_params = NULL */ + err = rte_event_eth_rx_adapter_create_ext_with_params(TEST_INST_ID, + TEST_DEV_ID, test_port_conf_cb, NULL, NULL); + TEST_ASSERT(err == 0, "Expected 0 got %d", err); + if (err == 0) + adapter_free(); + err = rte_event_eth_rx_adapter_create_ext_with_params(TEST_INST_ID, TEST_DEV_ID, test_port_conf_cb, NULL, &rxa_params); TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err); @@ -634,12 +654,6 @@ adapter_queue_stats_test(void) return TEST_SUCCESS; } -static void -adapter_free(void) -{ - rte_event_eth_rx_adapter_free(TEST_INST_ID); -} - static int adapter_create_free(void) { diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c index 93bed18e93..fe84471523 100644 --- a/lib/eventdev/rte_event_eth_rx_adapter.c +++ b/lib/eventdev/rte_event_eth_rx_adapter.c @@ -2493,6 +2493,7 @@ rxa_config_params_validate(struct rte_event_eth_rx_adapter_params *rxa_params, /* use default values if rxa_params is NULL */ temp_params->event_buf_size = ETH_EVENT_BUFFER_SIZE; temp_params->use_queue_event_buf = false; + return 0; } else if (!rxa_params->use_queue_event_buf && rxa_params->event_buf_size == 0) { RTE_EDEV_LOG_ERR("event buffer size can't be zero\n");