From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 08266A0093 for ; Fri, 22 May 2020 11:40:35 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F081D1D966; Fri, 22 May 2020 11:40:34 +0200 (CEST) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by dpdk.org (Postfix) with ESMTP id DFA3F1D96F for ; Fri, 22 May 2020 11:40:32 +0200 (CEST) Received: by mail-wr1-f66.google.com with SMTP id i15so9478380wrx.10 for ; Fri, 22 May 2020 02:40:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UVRADTFkp88X1kDip3rF5h1gu/we9t4ViNYkYG72Wz4=; b=OihrSHpQfTv8SE8DXbj0FPFEKNMmDg0/4C+wnLKmLaefhqFfCPhvls3wZX1NI1QYgS CMW1WaoltdcsJS0wY3FC8VyOxPsK6C+i3kIWZYslTEZ67cBN9NihpdSz9ZjDOQKg+BeH iNsPerISXaG0sRWpLrg2h59oerpXiH/NDHAGsHH54Y5xIcpcAgzpe91ed8qED56RzUtp iy7yHbMTGREhjVCTf9dewrWDS/hyzQolqI/d35HlLMxvJGqgKwK6dE02Tu/1Y6q21AaM 5s/hWGDpKMJKLFVuRlOSgyaVdaColD8UDtgKM1ME37XiP/A2MarEF1+Q1FOs7N1P4Ns4 5sZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UVRADTFkp88X1kDip3rF5h1gu/we9t4ViNYkYG72Wz4=; b=UWB/2Ka2gJRKPhz0k7646+Yw09tu/vLtAqntGOP/EnNgRrCrwFSk+j3vvCnOL875Mh x1+pezjhs1uAPx302a0v8Y+dmrzxzol3zxTWJU73ROsPdL7W+O8HZihPbociiq3EnHnR xVU01rNCUevx3rWj5qUIOFGoQKZNhHimb93GktnV7ymGbqTvPa7JMq2eb+1wYkxw3PYh 0VC+pok4IFU2aJIgbB5hjuAYfcVCcMhD1h5XVJwuoIa7Hu+UPzLhvWHNyZAMX6X6k5Ho yRJbecuCPSqlxUz7HjndRmJ37oHtXCY5xGT8ePykCINoc0Ox3dMoZoQYDVzYfcUpNOrV mZXw== X-Gm-Message-State: AOAM533wj73QOP0GEnWP9R/izAU0ZwpiQ/h4ddcAIZ+LpHliNtVKl5JB Di13FDJeR+xGTDkZyqt2E8DbbFSuLck= X-Google-Smtp-Source: ABdhPJyKbv3KCiIPtLHGH0wjTZATZHwxRM+vJAo4fzy3pTkMIEP5ocJC+Aa+iNeW9iwUI9+Yu5oY/A== X-Received: by 2002:adf:ee0d:: with SMTP id y13mr2623174wrn.401.1590140432552; Fri, 22 May 2020 02:40:32 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id x186sm588438wmg.8.2020.05.22.02.40.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 May 2020 02:40:32 -0700 (PDT) From: luca.boccassi@gmail.com To: Yunjian Wang Cc: Gagandeep Singh , dpdk stable Date: Fri, 22 May 2020 10:39:42 +0100 Message-Id: <20200522094022.1025696-3-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200522094022.1025696-1-luca.boccassi@gmail.com> References: <20200519130549.112823-214-luca.boccassi@gmail.com> <20200522094022.1025696-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'crypto/caam_jr: fix check of file descriptors' has been queued to stable release 19.11.3 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 05/24/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Thanks. Luca Boccassi --- >From 199d2c49a69f7c02d7d78251014667e679e580d9 Mon Sep 17 00:00:00 2001 From: Yunjian Wang Date: Thu, 14 May 2020 18:59:55 +0800 Subject: [PATCH] crypto/caam_jr: fix check of file descriptors [ upstream commit 61552661e25df5b78be3079bc02b56a375dc0fdc ] Zero is a valid fd. It will fail to check the fd if the fd is zero. The "job_ring->uio_fd" is an fd, so define it as "int". Fixes: e7a45f3cc245 ("crypto/caam_jr: add UIO specific operations") Fixes: a5e1018d5e67 ("crypto/caam_jr: add routines to configure HW") Signed-off-by: Yunjian Wang Acked-by: Gagandeep Singh --- drivers/crypto/caam_jr/caam_jr.c | 23 ++++++++++++--- drivers/crypto/caam_jr/caam_jr_hw_specific.h | 2 +- drivers/crypto/caam_jr/caam_jr_pvt.h | 9 +++--- drivers/crypto/caam_jr/caam_jr_uio.c | 30 +++++++++++++------- 4 files changed, 45 insertions(+), 19 deletions(-) diff --git a/drivers/crypto/caam_jr/caam_jr.c b/drivers/crypto/caam_jr/caam_jr.c index 8aaa3d45f6..86aa9a103e 100644 --- a/drivers/crypto/caam_jr/caam_jr.c +++ b/drivers/crypto/caam_jr/caam_jr.c @@ -2084,7 +2084,7 @@ static struct rte_security_ops caam_jr_security_ops = { static void close_job_ring(struct sec_job_ring_t *job_ring) { - if (job_ring->irq_fd) { + if (job_ring->irq_fd != -1) { /* Producer index is frozen. If consumer index is not equal * with producer index, then we have descs to flush. */ @@ -2093,7 +2093,7 @@ close_job_ring(struct sec_job_ring_t *job_ring) /* free the uio job ring */ free_job_ring(job_ring->irq_fd); - job_ring->irq_fd = 0; + job_ring->irq_fd = -1; caam_jr_dma_free(job_ring->input_ring); caam_jr_dma_free(job_ring->output_ring); g_job_rings_no--; @@ -2197,7 +2197,7 @@ caam_jr_dev_uninit(struct rte_cryptodev *dev) * */ static void * -init_job_ring(void *reg_base_addr, uint32_t irq_id) +init_job_ring(void *reg_base_addr, int irq_id) { struct sec_job_ring_t *job_ring = NULL; int i, ret = 0; @@ -2207,7 +2207,7 @@ init_job_ring(void *reg_base_addr, uint32_t irq_id) int irq_coalescing_count = 0; for (i = 0; i < MAX_SEC_JOB_RINGS; i++) { - if (g_job_rings[i].irq_fd == 0) { + if (g_job_rings[i].irq_fd == -1) { job_ring = &g_job_rings[i]; g_job_rings_no++; break; @@ -2460,6 +2460,15 @@ cryptodev_caam_jr_remove(struct rte_vdev_device *vdev) return rte_cryptodev_pmd_destroy(cryptodev); } +static void +sec_job_rings_init(void) +{ + int i; + + for (i = 0; i < MAX_SEC_JOB_RINGS; i++) + g_job_rings[i].irq_fd = -1; +} + static struct rte_vdev_driver cryptodev_caam_jr_drv = { .probe = cryptodev_caam_jr_probe, .remove = cryptodev_caam_jr_remove @@ -2474,6 +2483,12 @@ RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_CAAM_JR_PMD, RTE_PMD_REGISTER_CRYPTO_DRIVER(caam_jr_crypto_drv, cryptodev_caam_jr_drv.driver, cryptodev_driver_id); +RTE_INIT(caam_jr_init) +{ + sec_uio_job_rings_init(); + sec_job_rings_init(); +} + RTE_INIT(caam_jr_init_log) { caam_jr_logtype = rte_log_register("pmd.crypto.caam"); diff --git a/drivers/crypto/caam_jr/caam_jr_hw_specific.h b/drivers/crypto/caam_jr/caam_jr_hw_specific.h index 5f58a585d7..bbe8bc3f90 100644 --- a/drivers/crypto/caam_jr/caam_jr_hw_specific.h +++ b/drivers/crypto/caam_jr/caam_jr_hw_specific.h @@ -360,7 +360,7 @@ struct sec_job_ring_t { * bitwise operations. */ - uint32_t irq_fd; /* The file descriptor used for polling from + int irq_fd; /* The file descriptor used for polling from * user space for interrupts notifications */ uint32_t jr_mode; /* Model used by SEC Driver to receive diff --git a/drivers/crypto/caam_jr/caam_jr_pvt.h b/drivers/crypto/caam_jr/caam_jr_pvt.h index 98cd4438aa..d6b3dafaa6 100644 --- a/drivers/crypto/caam_jr/caam_jr_pvt.h +++ b/drivers/crypto/caam_jr/caam_jr_pvt.h @@ -216,7 +216,7 @@ calc_chksum(void *buffer, int len) } struct uio_job_ring { uint32_t jr_id; - uint32_t uio_fd; + int uio_fd; void *register_base_addr; int map_size; int uio_minor_number; @@ -224,8 +224,9 @@ struct uio_job_ring { int sec_cleanup(void); int sec_configure(void); +void sec_uio_job_rings_init(void); struct uio_job_ring *config_job_ring(void); -void free_job_ring(uint32_t uio_fd); +void free_job_ring(int uio_fd); /* For Dma memory allocation of specified length and alignment */ static inline void * @@ -279,7 +280,7 @@ static inline rte_iova_t caam_jr_dma_vtop(void *ptr) * @retval 0 for success * @retval -1 value for error */ -uint32_t caam_jr_enable_irqs(uint32_t uio_fd); +uint32_t caam_jr_enable_irqs(int uio_fd); /** @brief Request to SEC kernel driver to disable interrupts for descriptor * finished processing @@ -292,6 +293,6 @@ uint32_t caam_jr_enable_irqs(uint32_t uio_fd); * @retval -1 value for error * */ -uint32_t caam_jr_disable_irqs(uint32_t uio_fd); +uint32_t caam_jr_disable_irqs(int uio_fd); #endif diff --git a/drivers/crypto/caam_jr/caam_jr_uio.c b/drivers/crypto/caam_jr/caam_jr_uio.c index b1bb44ca42..30837c1164 100644 --- a/drivers/crypto/caam_jr/caam_jr_uio.c +++ b/drivers/crypto/caam_jr/caam_jr_uio.c @@ -145,7 +145,7 @@ file_read_first_line(const char root[], const char subdir[], "%s/%s/%s", root, subdir, filename); fd = open(absolute_file_name, O_RDONLY); - SEC_ASSERT(fd > 0, fd, "Error opening file %s", + SEC_ASSERT(fd >= 0, fd, "Error opening file %s", absolute_file_name); /* read UIO device name from first line in file */ @@ -179,7 +179,7 @@ file_read_first_line(const char root[], const char subdir[], * kernel driver as well. No special return values are used. */ static int -sec_uio_send_command(uint32_t uio_fd, int32_t uio_command) +sec_uio_send_command(int uio_fd, int32_t uio_command) { int ret; @@ -202,7 +202,7 @@ sec_uio_send_command(uint32_t uio_fd, int32_t uio_command) * @retval -1 value for error */ uint32_t -caam_jr_enable_irqs(uint32_t uio_fd) +caam_jr_enable_irqs(int uio_fd) { int ret; @@ -233,7 +233,7 @@ caam_jr_enable_irqs(uint32_t uio_fd) * */ uint32_t -caam_jr_disable_irqs(uint32_t uio_fd) +caam_jr_disable_irqs(int uio_fd) { int ret; @@ -322,12 +322,12 @@ uio_map_registers(int uio_device_fd, int uio_device_id, } void -free_job_ring(uint32_t uio_fd) +free_job_ring(int uio_fd) { struct uio_job_ring *job_ring = NULL; int i; - if (!uio_fd) + if (uio_fd == -1) return; for (i = 0; i < MAX_SEC_JOB_RINGS; i++) { @@ -347,7 +347,7 @@ free_job_ring(uint32_t uio_fd) job_ring->jr_id, job_ring->uio_fd); close(job_ring->uio_fd); g_uio_jr_num--; - job_ring->uio_fd = 0; + job_ring->uio_fd = -1; if (job_ring->register_base_addr == NULL) return; @@ -370,7 +370,7 @@ uio_job_ring *config_job_ring(void) int i; for (i = 0; i < MAX_SEC_JOB_RINGS; i++) { - if (g_uio_job_ring[i].uio_fd == 0) { + if (g_uio_job_ring[i].uio_fd == -1) { job_ring = &g_uio_job_ring[i]; g_uio_jr_num++; break; @@ -389,7 +389,7 @@ uio_job_ring *config_job_ring(void) /* Open device file */ job_ring->uio_fd = open(uio_device_file_name, O_RDWR); - SEC_ASSERT(job_ring->uio_fd > 0, NULL, + SEC_ASSERT(job_ring->uio_fd >= 0, NULL, "Failed to open UIO device file for job ring %d", job_ring->jr_id); @@ -488,12 +488,22 @@ sec_cleanup(void) /* I need to close the fd after shutdown UIO commands need to be * sent using the fd */ - if (job_ring->uio_fd != 0) { + if (job_ring->uio_fd != -1) { CAAM_JR_INFO( "Closed device file for job ring %d , fd = %d", job_ring->jr_id, job_ring->uio_fd); close(job_ring->uio_fd); + job_ring->uio_fd = -1; } } return 0; } + +void +sec_uio_job_rings_init(void) +{ + int i; + + for (i = 0; i < MAX_SEC_JOB_RINGS; i++) + g_uio_job_ring[i].uio_fd = -1; +} -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-05-22 10:37:39.359834240 +0100 +++ 0003-crypto-caam_jr-fix-check-of-file-descriptors.patch 2020-05-22 10:37:39.056411424 +0100 @@ -1,14 +1,15 @@ -From 61552661e25df5b78be3079bc02b56a375dc0fdc Mon Sep 17 00:00:00 2001 +From 199d2c49a69f7c02d7d78251014667e679e580d9 Mon Sep 17 00:00:00 2001 From: Yunjian Wang Date: Thu, 14 May 2020 18:59:55 +0800 Subject: [PATCH] crypto/caam_jr: fix check of file descriptors +[ upstream commit 61552661e25df5b78be3079bc02b56a375dc0fdc ] + Zero is a valid fd. It will fail to check the fd if the fd is zero. The "job_ring->uio_fd" is an fd, so define it as "int". Fixes: e7a45f3cc245 ("crypto/caam_jr: add UIO specific operations") Fixes: a5e1018d5e67 ("crypto/caam_jr: add routines to configure HW") -Cc: stable@dpdk.org Signed-off-by: Yunjian Wang Acked-by: Gagandeep Singh @@ -20,10 +21,10 @@ 4 files changed, 45 insertions(+), 19 deletions(-) diff --git a/drivers/crypto/caam_jr/caam_jr.c b/drivers/crypto/caam_jr/caam_jr.c -index 45003ba25a..caf2386772 100644 +index 8aaa3d45f6..86aa9a103e 100644 --- a/drivers/crypto/caam_jr/caam_jr.c +++ b/drivers/crypto/caam_jr/caam_jr.c -@@ -2072,7 +2072,7 @@ static struct rte_security_ops caam_jr_security_ops = { +@@ -2084,7 +2084,7 @@ static struct rte_security_ops caam_jr_security_ops = { static void close_job_ring(struct sec_job_ring_t *job_ring) { @@ -32,7 +33,7 @@ /* Producer index is frozen. If consumer index is not equal * with producer index, then we have descs to flush. */ -@@ -2081,7 +2081,7 @@ close_job_ring(struct sec_job_ring_t *job_ring) +@@ -2093,7 +2093,7 @@ close_job_ring(struct sec_job_ring_t *job_ring) /* free the uio job ring */ free_job_ring(job_ring->irq_fd); @@ -41,7 +42,7 @@ caam_jr_dma_free(job_ring->input_ring); caam_jr_dma_free(job_ring->output_ring); g_job_rings_no--; -@@ -2185,7 +2185,7 @@ caam_jr_dev_uninit(struct rte_cryptodev *dev) +@@ -2197,7 +2197,7 @@ caam_jr_dev_uninit(struct rte_cryptodev *dev) * */ static void * @@ -50,7 +51,7 @@ { struct sec_job_ring_t *job_ring = NULL; int i, ret = 0; -@@ -2195,7 +2195,7 @@ init_job_ring(void *reg_base_addr, uint32_t irq_id) +@@ -2207,7 +2207,7 @@ init_job_ring(void *reg_base_addr, uint32_t irq_id) int irq_coalescing_count = 0; for (i = 0; i < MAX_SEC_JOB_RINGS; i++) { @@ -59,7 +60,7 @@ job_ring = &g_job_rings[i]; g_job_rings_no++; break; -@@ -2448,6 +2448,15 @@ cryptodev_caam_jr_remove(struct rte_vdev_device *vdev) +@@ -2460,6 +2460,15 @@ cryptodev_caam_jr_remove(struct rte_vdev_device *vdev) return rte_cryptodev_pmd_destroy(cryptodev); } @@ -75,7 +76,7 @@ static struct rte_vdev_driver cryptodev_caam_jr_drv = { .probe = cryptodev_caam_jr_probe, .remove = cryptodev_caam_jr_remove -@@ -2462,6 +2471,12 @@ RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_CAAM_JR_PMD, +@@ -2474,6 +2483,12 @@ RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_CAAM_JR_PMD, RTE_PMD_REGISTER_CRYPTO_DRIVER(caam_jr_crypto_drv, cryptodev_caam_jr_drv.driver, cryptodev_driver_id);