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@FreeBSD.org
          Reporter: thomasyang1...@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.
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to