From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf0-f44.google.com (mail-lf0-f44.google.com [209.85.215.44]) by dpdk.org (Postfix) with ESMTP id BBBC3231E for ; Fri, 21 Jul 2017 21:09:23 +0200 (CEST) Received: by mail-lf0-f44.google.com with SMTP id d78so26693293lfg.3 for ; Fri, 21 Jul 2017 12:09:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=/MMnlDvtjRYAkqROW0FWw3HV79bHDY4ENM0JBXvtZsI=; b=dMQ3Fqo9TfLQZn00I0J76LgcdNBWj0bZYGRNQxnOj2cAlplyyZosvYoeBGcCwpmgfJ m/fcRxY/FkkWTriDvMGgHHjHlK8sOcNIfsqolvejoOjBVqfLdL34yVk/BlGbvY3FKeEH 2qPUbjhY0x4k+ksW5JRvwrYzSOBDaSjxPgdPY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=/MMnlDvtjRYAkqROW0FWw3HV79bHDY4ENM0JBXvtZsI=; b=YmDKdDfIyNuRLuTrCUPL7ZiemVzLSrm3hkRnQ1a9eEe2R85Tt+fRg124NE2ZAiywfu luS2CCo++rq0hTJGXGCvtbl9Vt8jpRXQGMP9JyM/DdXlSuLnMCRod3bfziWrSoZEYul1 lWncHZx7PGuwfX/1TJ1LsF4cvMcw4M+r1a0cJtdl61plvJOU6QS4w9s28zQMYbAv2FN6 cIOSDA9o4eoeYAhsJcZeW31NTfVWXheZg2aqG+hIww9o16kTHiao+KwABxE9JyaKmU5f KIiriSynxQ/u5BjWHAA8qXmc+JlmzTQDTUwsuQWSc9rNKZRA/gcq5hoHEOixW21hl8qu 1AJQ== X-Gm-Message-State: AIVw110dQdwmMRg+Dnf6Rlk9IbQ04eGiZIM1rBBqk8tZ0SWjaFb153QP cpIbHHcPSVFPRCpC4eoQhWdA0UsfysVW X-Received: by 10.46.0.20 with SMTP id 20mr87639lja.68.1500664163270; Fri, 21 Jul 2017 12:09:23 -0700 (PDT) MIME-Version: 1.0 Received: by 10.46.82.154 with HTTP; Fri, 21 Jul 2017 12:09:22 -0700 (PDT) In-Reply-To: <20170721032233.59657-4-ajit.khaparde@broadcom.com> References: <12e05afb-d540-be7a-6d26-2229fd74a969@intel.com> <20170721032233.59657-1-ajit.khaparde@broadcom.com> <20170721032233.59657-4-ajit.khaparde@broadcom.com> From: Stephen Hurd Date: Fri, 21 Jul 2017 12:09:22 -0700 Message-ID: To: Ajit Khaparde Cc: dev@dpdk.org, Ferruh Yigit Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v2 2/8] net/bnxt: fix to avoid a segfault X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Jul 2017 19:09:24 -0000 So the only change was replacing a nesting level with a continue? Yeah, looks good. On Thu, Jul 20, 2017 at 8:22 PM, Ajit Khaparde wrote: > Fix use of local variable to avoid segfault. > cnt was incorrectly tested and decremented in the loop that removes > a VLAN from the table. > > Fixes: 36735a932ca7 ("support set VF QOS and MAC anti spoof") > > Signed-off-by: Stephen Hurd > Signed-off-by: Ajit Khaparde > > -- > v1->v2: incorporate review feedback. > --- > drivers/net/bnxt/rte_pmd_bnxt.c | 101 +++++++++++++++++++----------- > ---------- > 1 file changed, 49 insertions(+), 52 deletions(-) > > diff --git a/drivers/net/bnxt/rte_pmd_bnxt.c b/drivers/net/bnxt/rte_pmd_ > bnxt.c > index 0a8fb1e..ec5855d 100644 > --- a/drivers/net/bnxt/rte_pmd_bnxt.c > +++ b/drivers/net/bnxt/rte_pmd_bnxt.c > @@ -473,62 +473,59 @@ int rte_pmd_bnxt_set_vf_vlan_filter(uint8_t port, > uint16_t vlan, > > for (i = 0; vf_mask; i++, vf_mask >>= 1) { > cnt = bp->pf.vf_info[i].vlan_count; > - if (vf_mask & 1) { > - if (bp->pf.vf_info[i].vlan_table == NULL) { > - rc = -1; > - continue; > + if ((vf_mask & 1) == 0) > + continue; > + > + if (bp->pf.vf_info[i].vlan_table == NULL) { > + rc = -1; > + continue; > + } > + if (vlan_on) { > + /* First, search for a duplicate... */ > + for (j = 0; j < cnt; j++) { > + if (rte_be_to_cpu_16( > + bp->pf.vf_info[i].vlan_table[j].vid) > == vlan) > + break; > } > - if (vlan_on) { > - /* First, search for a duplicate... */ > - for (j = 0; j < cnt; j++) { > - if (rte_be_to_cpu_16( > - bp->pf.vf_info[i].vlan_table[j].vid) > == > - vlan) > - break; > - } > - if (j == cnt) { > - /* Now check that there's space */ > - if (cnt == getpagesize() / > - sizeof(struct > bnxt_vlan_table_entry)) { > - RTE_LOG(ERR, PMD, > - "VF %d VLAN table is > full\n", > - i); > - RTE_LOG(ERR, PMD, > - "cannot add VLAN > %u\n", > - vlan); > - rc = -1; > - continue; > - } > - > - cnt = > bp->pf.vf_info[i].vlan_count++; > - /* > - * And finally, add to the > - * end of the table > - */ > - ve = &bp->pf.vf_info[i].vlan_table[ > cnt]; > - /* TODO: Hardcoded TPID */ > - ve->tpid = > rte_cpu_to_be_16(0x8100); > - ve->vid = rte_cpu_to_be_16(vlan); > - } > - } else { > - for (j = 0; cnt; j++) { > - if (rte_be_to_cpu_16( > - bp->pf.vf_info[i].vlan_table[j].vid) > != > - vlan) > - continue; > - memmove( > - &bp->pf.vf_info[i].vlan_table[j], > - &bp->pf.vf_info[i].vlan_table[j > + 1], > - getpagesize() - > - ((j + 1) * > - sizeof(struct > bnxt_vlan_table_entry))); > - j--; > - cnt = > bp->pf.vf_info[i].vlan_count--; > + if (j == cnt) { > + /* Now check that there's space */ > + if (cnt == getpagesize() / > + sizeof(struct bnxt_vlan_table_entry)) { > + RTE_LOG(ERR, PMD, > + "VF %d VLAN table is > full\n", > + i); > + RTE_LOG(ERR, PMD, > + "cannot add VLAN %u\n", > vlan); > + rc = -1; > + continue; > } > + > + /* cnt is one less than vlan_count */ > + cnt = bp->pf.vf_info[i].vlan_count++; > + /* > + * And finally, add to the > + * end of the table > + */ > + ve = &bp->pf.vf_info[i].vlan_table[cnt]; > + /* TODO: Hardcoded TPID */ > + ve->tpid = rte_cpu_to_be_16(0x8100); > + ve->vid = rte_cpu_to_be_16(vlan); > + } > + } else { > + for (j = 0; j < cnt; j++) { > + if (rte_be_to_cpu_16( > + bp->pf.vf_info[i].vlan_table[j].vid) > != vlan) > + continue; > + memmove(&bp->pf.vf_info[i].vlan_table[j], > + &bp->pf.vf_info[i].vlan_table[j + > 1], > + getpagesize() - ((j + 1) * > + sizeof(struct > bnxt_vlan_table_entry))); > + j--; > + cnt = --bp->pf.vf_info[i].vlan_count; > } > - rte_pmd_bnxt_set_vf_vlan_anti_ > spoof(dev->data->port_id, > - i, bp->pf.vf_info[i].vlan_spoof_ > en); > } > + rte_pmd_bnxt_set_vf_vlan_anti_spoof(dev->data->port_id, i, > + bp->pf.vf_info[i].vlan_spoof_en); > } > > return rc; > -- > 2.10.1 (Apple Git-78) > > -- Stephen Hurd 949-926-8039 stephen.hurd@broadcom.com