[Bug 193649] New: ring->nr_buf_size will be calculated wrongly on PPC machine

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Mon Sep 15 06:16:21 UTC 2014


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=193649

            Bug ID: 193649
           Summary: ring->nr_buf_size will be calculated wrongly on PPC
                    machine
           Product: Base System
           Version: 10.0-STABLE
          Hardware: ppc
                OS: Any
            Status: Needs Triage
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: thomasyang1206 at 126.com

Created attachment 147337
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=147337&action=edit
the first part log contains the bug with TX nr_buf_size = 0x8000000, the second
part log is the correct one without bug

When run netmap APP pkt-gen on PPC machine, say Freescale P4080, the buf size
of ring ring->nr_buf_size in "netmap_mem2.c, netmap_mem_rings_create()". The
declaration of nr_buf_size in struct netmap_ring is uint32_t, however it is
changed to uint16_t as following:
    *(uint16_t *)(uintptr_t)&ring->nr_buf_size =
NETMAP_BDG_BUF_SIZE(na->nm_mem);

    Thus buffer size will be different as the desired, and will cause
Segmentation fault. after changing it as:
    *(uint32_t *)(uintptr_t)&ring->nr_buf_size =
NETMAP_BDG_BUF_SIZE(na->nm_mem);
it works well on PPC。

    The log is attached, please find it, pay attention to the buf_nr_size value
between the two parts log section.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list