From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id ABE5E42AD6; Thu, 11 May 2023 16:00:30 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 99FD442DA5; Thu, 11 May 2023 16:00:30 +0200 (CEST) Received: from inbox.dpdk.org (inbox.dpdk.org [95.142.172.178]) by mails.dpdk.org (Postfix) with ESMTP id 9D1FF42DA5 for ; Thu, 11 May 2023 16:00:29 +0200 (CEST) Received: by inbox.dpdk.org (Postfix, from userid 33) id 8FE9242AD7; Thu, 11 May 2023 16:00:29 +0200 (CEST) From: bugzilla@dpdk.org To: dev@dpdk.org Subject: [Bug 1229] rte_mempool_avail_count : returns bigger than mempool size Date: Thu, 11 May 2023 14:00:29 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: DPDK X-Bugzilla-Component: core X-Bugzilla-Version: 22.11 X-Bugzilla-Keywords: X-Bugzilla-Severity: minor X-Bugzilla-Who: yasinncaner@gmail.com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: Normal X-Bugzilla-Assigned-To: dev@dpdk.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter target_milestone Message-ID: Content-Type: multipart/alternative; boundary=16838136290.220ccaCF.2752435 Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://bugs.dpdk.org/ Auto-Submitted: auto-generated X-Auto-Response-Suppress: All 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 --16838136290.220ccaCF.2752435 Date: Thu, 11 May 2023 16:00:29 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.dpdk.org/ Auto-Submitted: auto-generated X-Auto-Response-Suppress: All https://bugs.dpdk.org/show_bug.cgi?id=3D1229 Bug ID: 1229 Summary: rte_mempool_avail_count : returns bigger than mempool size Product: DPDK Version: 22.11 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: minor Priority: Normal Component: core Assignee: dev@dpdk.org Reporter: yasinncaner@gmail.com Target Milestone: --- Hello, Sometimes rte_mempool_avail_count function returns bigger than mempool size that cause mis-calculation/overflow/negative of in-use count ( rte_mempool_in_use_count) 11:51:48 NOTI [UseCount_mpool:00000065][avail_mpool:00010334] 11:51:48 NOTI [UseCount_mpool:4294967135][avail_mpool:00010560] After adding a condition, it is fixed. /* Return the number of entries in the mempool */ unsigned int rte_mempool_avail_count(const struct rte_mempool *mp) { unsigned count; unsigned lcore_id; count =3D rte_mempool_ops_get_count(mp); if (mp->cache_size =3D=3D 0){ if (count > mp->size){ return mp->size; } return count; } for (lcore_id =3D 0; lcore_id < RTE_MAX_LCORE; lcore_id++) count +=3D mp->local_cache[lcore_id].len; /* * due to race condition (access to len is not locked), the * total can be greater than size... so fix the result */ if (count > mp->size){ return mp->size; } return count; } --=20 You are receiving this mail because: You are the assignee for the bug.= --16838136290.220ccaCF.2752435 Date: Thu, 11 May 2023 16:00:29 +0200 MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.dpdk.org/ Auto-Submitted: auto-generated X-Auto-Response-Suppress: All
Bug ID 1229
Summary rte_mempool_avail_count : returns bigger than mempool size
Product DPDK
Version 22.11
Hardware x86
OS Linux
Status UNCONFIRMED
Severity minor
Priority Normal
Component core
Assignee dev@dpdk.org
Reporter yasinncaner@gmail.com
Target Milestone ---

Hello,

Sometimes rte_mempool_avail_count function returns bigger than mempool size
that cause mis-calculation/overflow/negative of in-use count  (
rte_mempool_in_use_count)


11:51:48 NOTI [UseCount_mpool:00000065][avail_mpool:00010334]
11:51:48 NOTI [UseCount_mpool:4294967135][avail_mpool:00010560]


After adding a condition, it is fixed.

/* Return the number of entries in the mempool */
unsigned int
rte_mempool_avail_count(const struct rte_mempool *mp)
{
        unsigned count;
        unsigned lcore_id;

        count =3D rte_mempool_ops_get_count(mp);

        if (mp->cache_size =3D=3D 0){
                if (count > mp->size){
                        return mp->size;
                }
                return count;
        }
        for (lcore_id =3D 0; lcore_id < RTE_MAX_LCORE; lcore_id++)
                count +=3D mp->local_cache[lcore_id].len;

        /*
         * due to race condition (access to len is not locked), the
         * total can be greater than size... so fix the result
         */
        if (count > mp->size){
                return mp->size;
        }
        return count;
}
          


You are receiving this mail because:
  • You are the assignee for the bug.
=20=20=20=20=20=20=20=20=20=20
= --16838136290.220ccaCF.2752435--