02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

01 Jul, 2017

1 commit

  • refcount_t type and corresponding API should be
    used instead of atomic_t when the variable is used as
    a reference counter. This allows to avoid accidental
    refcounter overflows that might lead to use-after-free
    situations.

    Signed-off-by: Elena Reshetova
    Signed-off-by: Hans Liljestrand
    Signed-off-by: Kees Cook
    Signed-off-by: David Windsor
    Signed-off-by: David S. Miller

    Reshetova, Elena
     

29 Mar, 2017

1 commit


08 Feb, 2017

1 commit

  • Add confirm_neigh method to dst_ops and use it from IPv4 and IPv6
    to lookup and confirm the neighbour. Its usage via the new helper
    dst_confirm_neigh() should be restricted to MSG_PROBE users for
    performance reasons.

    For XFRM prefer the last tunnel address, if present. With help
    from Steffen Klassert.

    Signed-off-by: Julian Anastasov
    Acked-by: Steffen Klassert
    Signed-off-by: David S. Miller

    Julian Anastasov
     

04 Dec, 2016

1 commit

  • Implemented RFC7527 Enhanced DAD.
    IPv6 duplicate address detection can fail if there is some temporary
    loopback of Ethernet frames. RFC7527 solves this by including a random
    nonce in the NS messages used for DAD, and if an NS is received with the
    same nonce it is assumed to be a looped back DAD probe and is ignored.
    RFC7527 is enabled by default. Can be disabled by setting both of
    conf/{all,interface}/enhanced_dad to zero.

    Signed-off-by: Erik Nordmark
    Signed-off-by: Bob Gilligan
    Reviewed-by: Hannes Frederic Sowa
    Signed-off-by: David S. Miller

    Erik Nordmark
     

16 Jun, 2016

5 commits

  • This patch introduce different 6lowpan handling for receive and transmit
    NS/NA messages for the ipv6 neighbour discovery. The first use-case is
    for supporting 802.15.4 short addresses inside the option fields and
    handling for RFC6775 6CO option field as userspace option.

    Cc: David S. Miller
    Cc: Alexey Kuznetsov
    Cc: James Morris
    Cc: Hideaki YOSHIFUJI
    Cc: Patrick McHardy
    Reviewed-by: Stefan Schmidt
    Acked-by: YOSHIFUJI Hideaki
    Signed-off-by: Alexander Aring
    Signed-off-by: David S. Miller

    Alexander Aring
     
  • This patch exports some neighbour discovery functions which can be used
    by 6lowpan neighbour discovery ops functionality then.

    Cc: David S. Miller
    Cc: Alexey Kuznetsov
    Cc: James Morris
    Cc: Hideaki YOSHIFUJI
    Cc: Patrick McHardy
    Acked-by: YOSHIFUJI Hideaki
    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: David S. Miller

    Alexander Aring
     
  • This patch introduces neighbour discovery ops callback structure. The
    idea is to separate the handling for 6LoWPAN into the 6lowpan module.

    These callback offers 6lowpan different handling, such as 802.15.4 short
    address handling or RFC6775 (Neighbor Discovery Optimization for IPv6
    over 6LoWPANs).

    Cc: David S. Miller
    Cc: Alexey Kuznetsov
    Cc: James Morris
    Cc: Hideaki YOSHIFUJI
    Cc: Patrick McHardy
    Acked-by: YOSHIFUJI Hideaki
    Signed-off-by: Alexander Aring
    Signed-off-by: David S. Miller

    Alexander Aring
     
  • This patch adds __ndisc_opt_addr_data as low-level function for
    ndisc_opt_addr_data which doesn't depend on net_device parameter.

    Cc: David S. Miller
    Cc: Alexey Kuznetsov
    Cc: James Morris
    Cc: Hideaki YOSHIFUJI
    Cc: Patrick McHardy
    Acked-by: YOSHIFUJI Hideaki
    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: David S. Miller

    Alexander Aring
     
  • This patch adds __ndisc_opt_addr_space as low-level function for
    ndisc_opt_addr_space which doesn't depend on net_device parameter.

    Cc: David S. Miller
    Cc: Alexey Kuznetsov
    Cc: James Morris
    Cc: Hideaki YOSHIFUJI
    Cc: Patrick McHardy
    Acked-by: YOSHIFUJI Hideaki
    Reviewed-by: Stefan Schmidt
    Signed-off-by: Alexander Aring
    Signed-off-by: David S. Miller

    Alexander Aring
     

02 Dec, 2015

1 commit

  • This reverts commit ab450605b35caa768ca33e86db9403229bf42be4.

    In IPv6, we cannot inherit the dst of the original dst. ndisc packets
    are IPv6 packets and may take another route than the original packet.

    This patch breaks the following scenario: a packet comes from eth0 and
    is forwarded through vxlan1. The encapsulated packet triggers an NS
    which cannot be sent because of the wrong route.

    CC: Jiri Benc
    CC: Thomas Graf
    Signed-off-by: Nicolas Dichtel
    Signed-off-by: David S. Miller

    Nicolas Dichtel
     

25 Sep, 2015

1 commit


21 Aug, 2015

1 commit


04 Mar, 2015

1 commit

  • While looking at the mpls code I found myself writing yet another
    version of neigh_lookup_noref. We currently have __ipv4_lookup_noref
    and __ipv6_lookup_noref.

    So to make my work a little easier and to make it a smidge easier to
    verify/maintain the mpls code in the future I stopped and wrote
    ___neigh_lookup_noref. Then I rewote __ipv4_lookup_noref and
    __ipv6_lookup_noref in terms of this new function. I tested my new
    version by verifying that the same code is generated in
    ip_finish_output2 and ip6_finish_output2 where these functions are
    inlined.

    To get to ___neigh_lookup_noref I added a new neighbour cache table
    function key_eq. So that the static size of the key would be
    available.

    I also added __neigh_lookup_noref for people who want to to lookup
    a neighbour table entry quickly but don't know which neibhgour table
    they are going to look up.

    Signed-off-by: "Eric W. Biederman"
    Signed-off-by: David S. Miller

    Eric W. Biederman
     

22 Sep, 2013

1 commit

  • There are a mix of function prototypes with and without extern
    in the kernel sources. Standardize on not using extern for
    function prototypes.

    Function prototypes don't need to be written with extern.
    extern is assumed by the compiler. Its use is as unnecessary as
    using auto to declare automatic/local variables in a block.

    Signed-off-by: Joe Perches
    Signed-off-by: David S. Miller

    Joe Perches
     

12 Sep, 2013

1 commit

  • When loading the ipv6 module, ndisc_init() is called before
    ip6_route_init(). As the former registers a handler calling
    fib6_run_gc(), this opens a window to run the garbage collector
    before necessary data structures are initialized. If a network
    device is initialized in this window, adding MAC address to it
    triggers a NETDEV_CHANGEADDR event, leading to a crash in
    fib6_clean_all().

    Take the event handler registration out of ndisc_init() into a
    separate function ndisc_late_init() and move it after
    ip6_route_init().

    Signed-off-by: Michal Kubecek
    Signed-off-by: David S. Miller

    Michal Kubeček
     

01 Sep, 2013

1 commit


01 Aug, 2013

1 commit


20 Jun, 2013

1 commit


22 Jan, 2013

1 commit


18 Jan, 2013

2 commits


15 Dec, 2012

1 commit

  • In function ndisc_redirect_rcv(), the skb->data points to the transport
    header, but function icmpv6_notify() need the skb->data points to the
    inner IP packet. So before using icmpv6_notify() to propagate redirect,
    change skb->data to point the inner IP packet that triggered the sending
    of the Redirect, and introduce struct rd_msg to make it easy.

    Signed-off-by: Duan Jiong
    Signed-off-by: David S. Miller

    Duan Jiong
     

13 Dec, 2012

1 commit

  • These symbols were exported for bonding device by commit 305d552a
    ("bonding: send IPv6 neighbor advertisement on failover").

    It bacame obsolete by commit 7c899432 ("bonding, ipv4, ipv6, vlan: Handle
    NETDEV_BONDING_FAILOVER like NETDEV_NOTIFY_PEERS") and removed by
    commit 4f5762ec ("bonding: Remove obsolete source file 'bond_ipv6.c'").

    Signed-off-by: YOSHIFUJI Hideaki
    Signed-off-by: David S. Miller

    YOSHIFUJI Hideaki
     

10 Aug, 2012

1 commit

  • Eric noticed, that when there will be devices with equal indices, some
    hash functions that use them will become less effective as they could.
    Fix this in advance by mixing the net_device address into the hash value
    instead of the device index.

    This is true for arp and ndisc hash fns. The netlabel, can and llc ones
    are also ifindex-based, but that three are init_net-only, thus will not
    be affected.

    Many thanks to David and Eric for the hash32_ptr implementation!

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     

12 Jul, 2012

1 commit


13 Apr, 2012

1 commit


28 Jan, 2012

1 commit


29 Dec, 2011

2 commits


04 Dec, 2011

1 commit


25 Apr, 2011

1 commit

  • These header files are never installed to user consumption, so any
    __KERNEL__ cpp checks are superfluous.

    Projects should also not copy these files into their userland utility
    sources and try to use them there. If they insist on doing so, the
    onus is on them to sanitize the headers as needed.

    Signed-off-by: David S. Miller

    David S. Miller
     

23 Apr, 2011

1 commit


03 Dec, 2010

1 commit


03 Jun, 2010

1 commit


24 Sep, 2009

1 commit

  • It's unused.

    It isn't needed -- read or write flag is already passed and sysctl
    shouldn't care about the rest.

    It _was_ used in two places at arch/frv for some reason.

    Signed-off-by: Alexey Dobriyan
    Cc: David Howells
    Cc: "Eric W. Biederman"
    Cc: Al Viro
    Cc: Ralf Baechle
    Cc: Martin Schwidefsky
    Cc: Ingo Molnar
    Cc: "David S. Miller"
    Cc: James Morris
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     

05 Jan, 2009

1 commit

  • Thanks to excellent diagnosis by Eduard Guzovsky.

    The core problem is that on a network with lots of active
    multicast traffic, the neighbour cache can fill up. If
    we try to allocate a new route and thus neighbour cache
    entry, the bog-standard GC attempt the neighbour layer does
    in ineffective because route entries hold a reference
    to the existing neighbour entries and GC can only liberate
    entries with no references.

    IPV4 already has a way to handle this, by doing a route cache
    GC in such situations (when neigh attach returns -ENOBUFS).

    So simply mimick this on the ipv6 side.

    Tested-by: Eduard Guzovsky
    Signed-off-by: David S. Miller

    David S. Miller
     

06 Nov, 2008

1 commit

  • This patch adds better IPv6 failover support for bonding devices,
    especially when in active-backup mode and there are only IPv6 addresses
    configured, as reported by Alex Sidorenko.

    - Creates a new file, net/drivers/bonding/bond_ipv6.c, for the
    IPv6-specific routines. Both regular bonds and VLANs over bonds
    are supported.

    - Adds a new tunable, num_unsol_na, to limit the number of unsolicited
    IPv6 Neighbor Advertisements that are sent on a failover event.
    Default is 1.

    - Creates two new IPv6 neighbor discovery functions:

    ndisc_build_skb()
    ndisc_send_skb()

    These were required to support VLANs since we have to be able to
    add the VLAN id to the skb since ndisc_send_na() and friends
    shouldn't be asked to do this. These two routines are basically
    __ndisc_send() split into two pieces, in a slightly different order.

    - Updates Documentation/networking/bonding.txt and bumps the rev of bond
    support to 3.4.0.

    On failover, this new code will generate one packet:

    - An unsolicited IPv6 Neighbor Advertisement, which helps the switch
    learn that the address has moved to the new slave.

    Testing has shown that sending just the NA results in pretty good
    behavior when in active-back mode, I saw no lost ping packets for example.

    Signed-off-by: Brian Haley
    Signed-off-by: Jay Vosburgh
    Signed-off-by: Jeff Garzik

    Brian Haley
     

17 Oct, 2008

1 commit

  • name and nlen parameters passed to ->strategy hook are unused, remove
    them. In general ->strategy hook should know what it's doing, and don't
    do something tricky for which, say, pointer to original userspace array
    may be needed (name).

    Signed-off-by: Alexey Dobriyan
    Acked-by: David S. Miller [ networking bits ]
    Cc: Ralf Baechle
    Cc: David Howells
    Cc: Matt Mackall
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     

20 May, 2008

1 commit