Re: if_tap unaligned access problem

From: Maksim Yevmenkin (maksim.yevmenkin_at_savvis.net)
Date: 04/28/05

  • Next message: Bruce M Simpson: "Re: if_tap unaligned access problem"
    Date: Thu, 28 Apr 2005 09:39:27 -0700
    To: Gleb Smirnoff <glebius@FreeBSD.org>
    
    

    Hello,

    > A quick question about if_tap, the tapwrite function
    > ( which copies an ethernet frame into an mbuf using uiotombuf )
    > is broken on alpha and sparc64.
    > The 14 byte ethernet header causes the rest of the frame to
    > be misaligned on 4 byte boundaries. This causes crashes in
    > various other parts of the kernel. The solution would be to
    > shift the mbuf by two bytes, but I am not quite sure where
    > this should happen.

    i think we have few options here:

    1) revert back original tapwrite function that was changed in v. 1.48
    and set offset to 2 bytes in top mbuf

    2) change current version of tapwrite so it would m_prepend and m_pullup
    mbuf after m_uiotombuf

    3) change m_uiotombuf to accept one more parameter - mbuf offset at
    which data should be copied. there are not that many users of m_uiotombuf

    /sys/kern/uipc_syscalls.c
    /sys/net/if_tap.c
    /sys/net/if_tun.c
    /sys/netgraph/ng_device.c

    > If_tun which is almost the same code has no such problem because
    > it lacks the 14 byte ethernet header. Openbsd has a combined
    > tun/tap driver, with some alignment hacks to fix this.

    yes, that is true.

    > Should I create a pr for this problem, or is there a simple
    > quick fix possible ?

    you probably should file pr. (1) and (2) above are quick fixes. (3) is
    more complicated and, maybe, not desirable.

    max
    _______________________________________________
    freebsd-net@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-net
    To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"


  • Next message: Bruce M Simpson: "Re: if_tap unaligned access problem"

    Relevant Pages

    • if_tap unaligned access problem
      ... From: Sten Spans ... (which copies an ethernet frame into an mbuf using uiotombuf) ... The 14 byte ethernet header causes the rest of the frame to ... with some alignment hacks to fix this. ...
      (freebsd-net)
    • Re: if_tap unaligned access problem
      ... >> The 14 byte ethernet header causes the rest of the frame to ... > and set offset to 2 bytes in top mbuf ... char dummy ...
      (freebsd-net)
    • Re: Problem with uipc_mbuf.c
      ... running netpipe.. ... without the fix we leak clusters like ... Fix a logic error introduced with mandatory mbuf cluster ... the 'fix' there were some larger leaks going on. ...
      (freebsd-net)