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 B803945D5D; Thu, 21 Nov 2024 00:38:44 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7A90843262; Thu, 21 Nov 2024 00:38:44 +0100 (CET) Received: from inbox.dpdk.org (inbox.dpdk.org [95.142.172.178]) by mails.dpdk.org (Postfix) with ESMTP id 8078440296 for ; Thu, 21 Nov 2024 00:38:42 +0100 (CET) Received: by inbox.dpdk.org (Postfix, from userid 33) id 6E03045D5E; Thu, 21 Nov 2024 00:38:42 +0100 (CET) From: bugzilla@dpdk.org To: dev@dpdk.org Subject: [DPDK/other Bug 1588] sched: potential issue with memcmp of padding Date: Wed, 20 Nov 2024 23:38:42 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: DPDK X-Bugzilla-Component: other X-Bugzilla-Version: unspecified X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: stephen@networkplumber.org 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=17321459220.24b4A1E95.822798 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 --17321459220.24b4A1E95.822798 Date: Thu, 21 Nov 2024 00:38:42 +0100 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=3D1588 Bug ID: 1588 Summary: sched: potential issue with memcmp of padding Product: DPDK Version: unspecified Hardware: All OS: All Status: UNCONFIRMED Severity: normal Priority: Normal Component: other Assignee: dev@dpdk.org Reporter: stephen@networkplumber.org Target Milestone: --- The tool PVS-studio flagged this code as a potential bug because of using memcmp on a padded structure. int rte_sched_subport_pipe_profile_add(struct rte_sched_port *port, uint32_t subport_id, struct rte_sched_pipe_params *params, uint32_t *pipe_profile_id) { ... /* Pipe profile should not exists */ for (i =3D 0; i < s->n_pipe_profiles; i++) if (memcmp(s->pipe_profiles + i, pp, sizeof(*pp)) =3D=3D 0)= { The layout of the structure reported by pahole is: struct rte_sched_pipe_profile { uint64_t tb_period; /* 0 8 */ uint64_t tb_credits_per_period; /* 8 8 */ uint64_t tb_size; /* 16 8 */ uint64_t tc_period; /* 24 8 */ uint64_t tc_credits_per_period[13]; /* 32 10= 4 */ /* --- cacheline 2 boundary (128 bytes) was 8 bytes ago --- */ uint8_t tc_ov_weight; /* 136 1 */ uint8_t wrr_cost[4]; /* 137 4 */ /* size: 144, cachelines: 3, members: 7 */ /* padding: 3 */ /* last cacheline: 16 bytes */ }; So the compiler will generate code comparing the last 3 bytes which is bad. --=20 You are receiving this mail because: You are the assignee for the bug.= --17321459220.24b4A1E95.822798 Date: Thu, 21 Nov 2024 00:38:42 +0100 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 1588
Summary sched: potential issue with memcmp of padding
Product DPDK
Version unspecified
Hardware All
OS All
Status UNCONFIRMED
Severity normal
Priority Normal
Component other
Assignee dev@dpdk.org
Reporter stephen@networkplumber.org
Target Milestone ---

The tool PVS-studio flagged this c=
ode as a potential bug because of using
memcmp on a padded structure.

int
rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
        uint32_t subport_id,
        struct rte_sched_pipe_params *params,
        uint32_t *pipe_profile_id)
{
...
        /* Pipe profile should not exists */
        for (i =3D 0; i < s->n_pipe_profiles; i++)
                if (memcmp(s->pipe_profiles + i, pp, sizeof(*pp)) =3D=3D=
 0) {

The layout of the structure reported by pahole is:

struct rte_sched_pipe_profile {
        uint64_t                   tb_period;            /*     0     8 */
        uint64_t                   tb_credits_per_period; /*     8     8 */
        uint64_t                   tb_size;              /*    16     8 */
        uint64_t                   tc_period;            /*    24     8 */
        uint64_t                   tc_credits_per_period[13]; /*    32   10=
4 */
        /* --- cacheline 2 boundary (128 bytes) was 8 bytes ago --- */
        uint8_t                    tc_ov_weight;         /*   136     1 */
        uint8_t                    wrr_cost[4];          /*   137     4 */

        /* size: 144, cachelines: 3, members: 7 */
        /* padding: 3 */
        /* last cacheline: 16 bytes */
};

So the compiler will generate code comparing the last 3 bytes which is bad.
          


You are receiving this mail because:
  • You are the assignee for the bug.
=20=20=20=20=20=20=20=20=20=20
= --17321459220.24b4A1E95.822798--