02 Oct, 2018

4 commits

  • If "td->u.target_size" is larger than sizeof(struct xt_entry_target) we
    return -EINVAL. But we don't check whether it's smaller than
    sizeof(struct xt_entry_target) and that could lead to an out of bounds
    read.

    Fixes: 7ba699c604ab ("[NET_SCHED]: Convert actions from rtnetlink to new netlink API")
    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     
  • Steffen Klassert says:

    ====================
    pull request (net): ipsec 2018-10-01

    1) Validate address prefix lengths in the xfrm selector,
    otherwise we may hit undefined behaviour in the
    address matching functions if the prefix is too
    big for the given address family.

    2) Fix skb leak on local message size errors.
    From Thadeu Lima de Souza Cascardo.

    3) We currently reset the transport header back to the network
    header after a transport mode transformation is applied. This
    leads to an incorrect transport header when multiple transport
    mode transformations are applied. Reset the transport header
    only after all transformations are already applied to fix this.
    From Sowmini Varadhan.

    4) We only support one offloaded xfrm, so reset crypto_done after
    the first transformation in xfrm_input(). Otherwise we may call
    the wrong input method for subsequent transformations.
    From Sowmini Varadhan.

    5) Fix NULL pointer dereference when skb_dst_force clears the dst_entry.
    skb_dst_force does not really force a dst refcount anymore, it might
    clear it instead. xfrm code did not expect this, add a check to not
    dereference skb_dst() if it was cleared by skb_dst_force.

    6) Validate xfrm template mode, otherwise we can get a stack-out-of-bounds
    read in xfrm_state_find. From Sean Tranchetti.

    Please pull or let me know if there are problems.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • In normal SYN processing, packets are handled without listener
    lock and in RCU protected ingress path.

    But syzkaller is known to be able to trick us and SYN
    packets might be processed in process context, after being
    queued into socket backlog.

    In commit 06f877d613be ("tcp/dccp: fix other lockdep splats
    accessing ireq_opt") I made a very stupid fix, that happened
    to work mostly because of the regular path being RCU protected.

    Really the thing protecting ireq->ireq_opt is RCU read lock,
    and the pseudo request refcnt is not relevant.

    This patch extends what I did in commit 449809a66c1d ("tcp/dccp:
    block BH for SYN processing") by adding an extra rcu_read_{lock|unlock}
    pair in the paths that might be taken when processing SYN from
    socket backlog (thus possibly in process context)

    Fixes: 06f877d613be ("tcp/dccp: fix other lockdep splats accessing ireq_opt")
    Signed-off-by: Eric Dumazet
    Reported-by: syzbot
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Pablo Neira Ayuso says:

    ====================
    Netfilter fixes for net

    The following patchset contains Netfilter fixes for your net tree:

    1) Skip ip_sabotage_in() for packet making into the VRF driver,
    otherwise packets are dropped, from David Ahern.

    2) Clang compilation warning uncovering typo in the
    nft_validate_register_store() call from nft_osf, from Stefan Agner.

    3) Double sizeof netlink message length calculations in ctnetlink,
    from zhong jiang.

    4) Missing rb_erase() on batch full in rbtree garbage collector,
    from Taehee Yoo.

    5) Calm down compilation warning in nf_hook(), from Florian Westphal.

    6) Missing check for non-null sk in xt_socket before validating
    netns procedence, from Flavio Leitner.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

30 Sep, 2018

14 commits

  • Fix a simple typo: attribuets -> attributes

    Signed-off-by: Johannes Berg
    Signed-off-by: David S. Miller

    Johannes Berg
     
  • Disable the clk during suspend to save power. Note that tp->clk may be
    NULL, the clk core functions handle this without problems.

    Reviewed-by: Andy Shevchenko
    Tested-by: Carlo Caione
    Signed-off-by: Hans de Goede
    Signed-off-by: David S. Miller

    Hans de Goede
     
  • In regular NIC transmission flow, driver always configures MAC using
    Tx queue zero descriptor as a part of MAC learning flow.
    But with multi Tx queue supported NIC, regular transmission can occur on
    any non-zero Tx queue and from that context it uses
    Tx queue zero descriptor to configure MAC, at the same time TX queue
    zero could be used by another CPU for regular transmission
    which could lead to Tx queue zero descriptor corruption and cause FW
    abort.

    This patch fixes this in such a way that driver always configures
    learned MAC address from the same Tx queue which is used for
    regular transmission.

    Fixes: 7e2cf4feba05 ("qlcnic: change driver hardware interface mechanism")
    Signed-off-by: Shahed Shaikh
    Signed-off-by: David S. Miller

    Shahed Shaikh
     
  • We see the following scenario:
    1) Link endpoint B on node 1 discovers that its peer endpoint is gone.
    Since there is a second working link, failover procedure is started.
    2) Link endpoint A on node 1 sends a FAILOVER message to peer endpoint
    A on node 2. The node item 1->2 goes to state FAILINGOVER.
    3) Linke endpoint A/2 receives the failover, and is supposed to take
    down its parallell link endpoint B/2, while producing a FAILOVER
    message to send back to A/1.
    4) However, B/2 has already been deleted, so no FAILOVER message can
    created.
    5) Node 1->2 remains in state FAILINGOVER forever, refusing to receive
    any messages that can bring B/1 up again. We are left with a non-
    redundant link between node 1 and 2.

    We fix this with letting endpoint A/2 build a dummy FAILOVER message
    to send to back to A/1, so that the situation can be resolved.

    Signed-off-by: LUU Duc Canh
    Signed-off-by: Jon Maloy
    Signed-off-by: David S. Miller

    LUU Duc Canh
     
  • Florian Fainelli says:

    ====================
    net: usb: Check for Wake-on-LAN modes

    Most of our USB Ethernet drivers don't seem to be checking properly
    whether the user is supplying a correct Wake-on-LAN mode to enter, so
    the experience as an user could be confusing, since it would generally
    lead to either no wake-up, or the device not being marked for wake-up.

    Please review!

    Changes in v2:

    - fixed lan78xx handling, thanks Woojung!
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • The driver does not check for Wake-on-LAN modes specified by an user,
    but will conditionally set the device as wake-up enabled or not based on
    that, which could be a very confusing user experience.

    Fixes: e0e474a83c18 ("smsc95xx: add wol magic packet support")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • The driver does not check for Wake-on-LAN modes specified by an user,
    but will conditionally set the device as wake-up enabled or not based on
    that, which could be a very confusing user experience.

    Fixes: 6c636503260d ("smsc75xx: add wol magic packet support")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • The driver does not check for Wake-on-LAN modes specified by an user,
    but will conditionally set the device as wake-up enabled or not based on
    that, which could be a very confusing user experience.

    Fixes: 21ff2e8976b1 ("r8152: support WOL")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • The driver currently silently accepts unsupported Wake-on-LAN modes
    (other than WAKE_PHY or WAKE_MAGIC) without reporting that to the user,
    which is confusing.

    Fixes: 19a38d8e0aa3 ("USB2NET : SR9800 : One chip USB2.0 USB2NET SR9800 Device Driver Support")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • The driver supports a fair amount of Wake-on-LAN modes, but is not
    checking that the user specified one that is supported.

    Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
    Signed-off-by: Florian Fainelli
    Reviewed-by: Woojung Huh
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • The driver currently silently accepts unsupported Wake-on-LAN modes
    (other than WAKE_PHY or WAKE_MAGIC) without reporting that to the user,
    which is confusing.

    Fixes: e2ca90c276e1 ("ax88179_178a: ASIX AX88179_178A USB 3.0/2.0 to gigabit ethernet adapter driver")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • The driver currently silently accepts unsupported Wake-on-LAN modes
    (other than WAKE_PHY or WAKE_MAGIC) without reporting that to the user,
    which is confusing.

    Fixes: 2e55cc7210fe ("[PATCH] USB: usbnet (3/9) module for ASIX Ethernet adapters")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • …inux/kernel/git/sschmidt/wpan

    Stefan Schmidt says:

    ====================
    pull-request: ieee802154 for net 2018-09-28

    An update from ieee802154 for your *net* tree.

    Some cleanup patches throughout the drivers from the Huawei tag team
    Yue Haibing and Zhong Jiang.
    Xue is replacing some magic numbers with defines in his mcr20a driver.
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • David Howells says:

    ====================
    rxrpc: Fixes

    Here are some miscellaneous fixes for AF_RXRPC:

    (1) Remove a duplicate variable initialisation.

    (2) Fix one of the checks made when we decide to set up a new incoming
    service call in which a flag is being checked in the wrong field of
    the packet header. This check is abstracted out into helper
    functions.

    (3) Fix RTT gathering. The code has been trying to make use of socket
    timestamps, but wasn't actually enabling them. The code has also been
    recording a transmit time for the outgoing packet for which we're
    going to measure the RTT after sending the message - but we can get
    the incoming packet before we get to that and record a negative RTT.

    (4) Fix the emission of BUSY packets (we are emitting ABORTs instead).

    (5) Improve error checking on incoming packets.

    (6) Try to fix a bug in new service call handling whereby a BUG we should
    never be able to reach somehow got triggered. Do this by moving much
    of the checking as early as possible and not repeating it later
    (depends on (5) above).

    (7) Fix the sockopts set on a UDP6 socket to include the ones set on a
    UDP4 socket so that we receive UDP4 errors and packet-too-large
    notifications too.

    (8) Fix the distribution of errors so that we do it at the point of
    receiving an error in the UDP callback rather than deferring it
    thereby cutting short any transmissions that would otherwise occur in
    the window.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

29 Sep, 2018

19 commits

  • Eric Dumazet says:

    ====================
    netpoll: second round of fixes.

    As diagnosed by Song Liu, ndo_poll_controller() can
    be very dangerous on loaded hosts, since the cpu
    calling ndo_poll_controller() might steal all NAPI
    contexts (for all RX/TX queues of the NIC).

    This capture, showing one ksoftirqd eating all cycles
    can last for unlimited amount of time, since one
    cpu is generally not able to drain all the queues under load.

    It seems that all networking drivers that do use NAPI
    for their TX completions, should not provide a ndo_poll_controller() :

    Most NAPI drivers have netpoll support already handled
    in core networking stack, since netpoll_poll_dev()
    uses poll_napi(dev) to iterate through registered
    NAPI contexts for a device.

    First patch is a fix in poll_one_napi().

    Then following patches take care of ten drivers.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • As diagnosed by Song Liu, ndo_poll_controller() can
    be very dangerous on loaded hosts, since the cpu
    calling ndo_poll_controller() might steal all NAPI
    contexts (for all RX/TX queues of the NIC). This capture
    can last for unlimited amount of time, since one
    cpu is generally not able to drain all the queues under load.

    ibmvnic uses NAPI for TX completions, so we better let core
    networking stack call the napi->poll() to avoid the capture.

    ibmvnic_netpoll_controller() was completely wrong anyway,
    as it was scheduling NAPI to service RX queues (instead of TX),
    so I doubt netpoll ever worked on this driver.

    Signed-off-by: Eric Dumazet
    Cc: Thomas Falcon
    Cc: John Allen
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • As diagnosed by Song Liu, ndo_poll_controller() can
    be very dangerous on loaded hosts, since the cpu
    calling ndo_poll_controller() might steal all NAPI
    contexts (for all RX/TX queues of the NIC). This capture
    can last for unlimited amount of time, since one
    cpu is generally not able to drain all the queues under load.

    sfc-falcon uses NAPI for TX completions, so we better let core
    networking stack call the napi->poll() to avoid the capture.

    Signed-off-by: Eric Dumazet
    Cc: Solarflare linux maintainers
    Cc: Edward Cree
    Cc: Bert Kenward
    Acked-By: Bert Kenward
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • As diagnosed by Song Liu, ndo_poll_controller() can
    be very dangerous on loaded hosts, since the cpu
    calling ndo_poll_controller() might steal all NAPI
    contexts (for all RX/TX queues of the NIC). This capture
    can last for unlimited amount of time, since one
    cpu is generally not able to drain all the queues under load.

    sfc uses NAPI for TX completions, so we better let core
    networking stack call the napi->poll() to avoid the capture.

    Signed-off-by: Eric Dumazet
    Cc: Edward Cree
    Cc: Bert Kenward
    Cc: Solarflare linux maintainers
    Acked-By: Bert Kenward
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • As diagnosed by Song Liu, ndo_poll_controller() can
    be very dangerous on loaded hosts, since the cpu
    calling ndo_poll_controller() might steal all NAPI
    contexts (for all RX/TX queues of the NIC). This capture
    can last for unlimited amount of time, since one
    cpu is generally not able to drain all the queues under load.

    ena uses NAPI for TX completions, so we better let core
    networking stack call the napi->poll() to avoid the capture.

    Signed-off-by: Eric Dumazet
    Cc: Netanel Belgazal
    Cc: Saeed Bishara
    Cc: Zorik Machulsky
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • As diagnosed by Song Liu, ndo_poll_controller() can
    be very dangerous on loaded hosts, since the cpu
    calling ndo_poll_controller() might steal all NAPI
    contexts (for all RX/TX queues of the NIC). This capture
    can last for unlimited amount of time, since one
    cpu is generally not able to drain all the queues under load.

    netxen uses NAPI for TX completions, so we better let core
    networking stack call the napi->poll() to avoid the capture.

    Signed-off-by: Eric Dumazet
    Cc: Manish Chopra
    Cc: Rahul Verma
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • As diagnosed by Song Liu, ndo_poll_controller() can
    be very dangerous on loaded hosts, since the cpu
    calling ndo_poll_controller() might steal all NAPI
    contexts (for all RX/TX queues of the NIC). This capture
    can last for unlimited amount of time, since one
    cpu is generally not able to drain all the queues under load.

    qlcnic uses NAPI for TX completions, so we better let core
    networking stack call the napi->poll() to avoid the capture.

    Signed-off-by: Eric Dumazet
    Cc: Harish Patil
    Cc: Manish Chopra
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • As diagnosed by Song Liu, ndo_poll_controller() can
    be very dangerous on loaded hosts, since the cpu
    calling ndo_poll_controller() might steal all NAPI
    contexts (for all RX/TX queues of the NIC). This capture
    can last for unlimited amount of time, since one
    cpu is generally not able to drain all the queues under load.

    virto_net uses NAPI for TX completions, so we better let core
    networking stack call the napi->poll() to avoid the capture.

    Signed-off-by: Eric Dumazet
    Cc: "Michael S. Tsirkin"
    Cc: Jason Wang
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • As diagnosed by Song Liu, ndo_poll_controller() can
    be very dangerous on loaded hosts, since the cpu
    calling ndo_poll_controller() might steal all NAPI
    contexts (for all RX/TX queues of the NIC). This capture
    can last for unlimited amount of time, since one
    cpu is generally not able to drain all the queues under load.

    hns uses NAPI for TX completions, so we better let core
    networking stack call the napi->poll() to avoid the capture.

    Signed-off-by: Eric Dumazet
    Cc: Yisen Zhuang
    Cc: Salil Mehta
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • As diagnosed by Song Liu, ndo_poll_controller() can
    be very dangerous on loaded hosts, since the cpu
    calling ndo_poll_controller() might steal all NAPI
    contexts (for all RX/TX queues of the NIC). This capture
    can last for unlimited amount of time, since one
    cpu is generally not able to drain all the queues under load.

    ehea uses NAPI for TX completions, so we better let core
    networking stack call the napi->poll() to avoid the capture.

    Signed-off-by: Eric Dumazet
    Cc: Douglas Miller
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • As diagnosed by Song Liu, ndo_poll_controller() can
    be very dangerous on loaded hosts, since the cpu
    calling ndo_poll_controller() might steal all NAPI
    contexts (for all RX/TX queues of the NIC). This capture
    can last for unlimited amount of time, since one
    cpu is generally not able to drain all the queues under load.

    hinic uses NAPI for TX completions, so we better let core
    networking stack call the napi->poll() to avoid the capture.

    Note that hinic_netpoll() was incorrectly scheduling NAPI
    on both RX and TX queues.

    Signed-off-by: Eric Dumazet
    Cc: Aviad Krawczyk
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Since we do no longer require NAPI drivers to provide
    an ndo_poll_controller(), napi_schedule() has not been done
    before poll_one_napi() invocation.

    So testing NAPI_STATE_SCHED is likely to cause early returns.

    While we are at it, remove outdated comment.

    Note to future bisections : This change might surface prior
    bugs in drivers. See commit 73f21c653f93 ("bnxt_en: Fix TX
    timeout during netpoll.") for one occurrence.

    Fixes: ac3d9dd034e5 ("netpoll: make ndo_poll_controller() optional")
    Signed-off-by: Eric Dumazet
    Tested-by: Song Liu
    Cc: Michael Chan
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • …kernel/git/jberg/mac80211

    Johannes Berg says:

    ====================
    More patches than I'd like perhaps, but each seems reasonable:
    * two new spectre-v1 mitigations in nl80211
    * TX status fix in general, and mesh in particular
    * powersave vs. offchannel fix
    * regulatory initialization fix
    * fix for a queue hang due to a bad return value
    * allocate TXQs for active monitor interfaces, fixing my
    earlier patch to avoid unnecessary allocations where I
    missed this case needed them
    * fix TDLS data frames priority assignment
    * fix scan results processing to take into account duplicate
    channel numbers (over different operating classes, but we
    don't necessarily know the operating class)
    * various hwsim fixes for radio destruction and new radio
    announcement messages
    * remove an extraneous kernel-doc line
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • The structure shared between driver and the management FW (mfw) differ in
    sizes. This would lead to issues when driver try to access the structure
    members which are not-aligned with the mfw copy e.g., data_ptr usage in the
    case of mfw_tlv request.
    Align the driver structure with mfw copy, add reserved field(s) to driver
    structure for the members not used by the driver.

    Fixes: dd006921d67f ("qed: Add MFW interfaces for TLV request support.)
    Signed-off-by: Sudarsana Reddy Kalluru
    Signed-off-by: Michal Kalderon

    Sudarsana Reddy Kalluru
     
  • Signed-off-by: Sudarsana Reddy Kalluru
    Signed-off-by: Ameen Rahman
    Signed-off-by: David S. Miller

    Sudarsana Reddy Kalluru
     
  • I haven't been doing reviews only but not active development on bridge
    code for several years. Roopa and Nikolay have been doing most of
    the new features and have agreed to take over as new co-maintainers.

    Signed-off-by: Stephen Hemminger
    Acked-by: Roopa Prabhu
    Acked-by: Nikolay Aleksandrov

    Stephen Hemminger
     
  • Julian Wiedmann says:

    ====================
    s390/qeth: fixes 2019-09-26

    please apply two qeth patches for -net. The first is a trivial cleanup
    required for patch #2 by Jean, which fixes a potential endless loop.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Functions qeth_get_ipa_msg and qeth_get_ipa_cmd_name are modifying
    the last member of global arrays without any locking that I can see.
    If two instances of either function are running at the same time,
    it could cause a race ultimately leading to an array overrun (the
    contents of the last entry of the array is the only guarantee that
    the loop will ever stop).

    Performing the lookups without modifying the arrays is admittedly
    slower (two comparisons per iteration instead of one) but these
    are operations which are rare (should only be needed in error
    cases or when debugging, not during successful operation) and it
    seems still less costly than introducing a mutex to protect the
    arrays in question.

    As a side bonus, it allows us to declare both arrays as const data.

    Signed-off-by: Jean Delvare
    Cc: Julian Wiedmann
    Cc: Ursula Braun
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Signed-off-by: Julian Wiedmann
    Signed-off-by: David S. Miller

    Jean Delvare
     
  • Use the common code ARRAY_SIZE macro instead of a private implementation.

    Reviewed-by: Jean Delvare
    Signed-off-by: zhong jiang
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Julian Wiedmann
    Signed-off-by: David S. Miller

    zhong jiang
     

28 Sep, 2018

3 commits

  • Only check for the network namespace if the socket is available.

    Fixes: f564650106a6 ("netfilter: check if the socket netns is correct.")
    Reported-by: Guenter Roeck
    Tested-by: Guenter Roeck
    Signed-off-by: Flavio Leitner
    Signed-off-by: Pablo Neira Ayuso

    Flavio Leitner
     
  • Unfortunately some versions of gcc emit following warning:
    $ make net/xfrm/xfrm_output.o
    linux/compiler.h:252:20: warning: array subscript is above array bounds [-Warray-bounds]
    hook_head = rcu_dereference(net->nf.hooks_arp[hook]);
    ^~~~~~~~~~~~~~~~~~~~~
    xfrm_output_resume passes skb_dst(skb)->ops->family as its 'pf' arg so compiler
    can't know that we'll never access hooks_arp[].
    (NFPROTO_IPV4 or NFPROTO_IPV6 are only possible cases).

    Avoid this by adding an explicit WARN_ON_ONCE() check.

    This patch has no effect if the family is a compile-time constant as gcc
    will remove the switch() construct entirely.

    Reported-by: David Ahern
    Signed-off-by: Florian Westphal
    Reviewed-by: David Ahern
    Signed-off-by: Pablo Neira Ayuso

    Florian Westphal
     
  • The nft_set_gc_batch_check() checks whether gc buffer is full.
    If gc buffer is full, gc buffer is released by
    the nft_set_gc_batch_complete() internally.
    In case of rbtree, the rb_erase() should be called before calling the
    nft_set_gc_batch_complete(). therefore the rb_erase() should
    be called before calling the nft_set_gc_batch_check() too.

    test commands:
    table ip filter {
    set set1 {
    type ipv4_addr; flags interval, timeout;
    gc-interval 10s;
    timeout 1s;
    elements = {
    1-2,
    3-4,
    5-6,
    ...
    10000-10001,
    }
    }
    }
    %nft -f test.nft

    splat looks like:
    [ 430.273885] kasan: GPF could be caused by NULL-ptr deref or user memory access
    [ 430.282158] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI
    [ 430.283116] CPU: 1 PID: 190 Comm: kworker/1:2 Tainted: G B 4.18.0+ #7
    [ 430.283116] Workqueue: events_power_efficient nft_rbtree_gc [nf_tables_set]
    [ 430.313559] RIP: 0010:rb_next+0x81/0x130
    [ 430.313559] Code: 08 49 bd 00 00 00 00 00 fc ff df 48 bb 00 00 00 00 00 fc ff df 48 85 c0 75 05 eb 58 48 89 d4
    [ 430.313559] RSP: 0018:ffff88010cdb7680 EFLAGS: 00010207
    [ 430.313559] RAX: 0000000000b84854 RBX: dffffc0000000000 RCX: ffffffff83f01973
    [ 430.313559] RDX: 000000000017090c RSI: 0000000000000008 RDI: 0000000000b84864
    [ 430.313559] RBP: ffff8801060d4588 R08: fffffbfff09bc349 R09: fffffbfff09bc349
    [ 430.313559] R10: 0000000000000001 R11: fffffbfff09bc348 R12: ffff880100f081a8
    [ 430.313559] R13: dffffc0000000000 R14: ffff880100ff8688 R15: dffffc0000000000
    [ 430.313559] FS: 0000000000000000(0000) GS:ffff88011b400000(0000) knlGS:0000000000000000
    [ 430.313559] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 430.313559] CR2: 0000000001551008 CR3: 000000005dc16000 CR4: 00000000001006e0
    [ 430.313559] Call Trace:
    [ 430.313559] nft_rbtree_gc+0x112/0x5c0 [nf_tables_set]
    [ 430.313559] process_one_work+0xc13/0x1ec0
    [ 430.313559] ? _raw_spin_unlock_irq+0x29/0x40
    [ 430.313559] ? pwq_dec_nr_in_flight+0x3c0/0x3c0
    [ 430.313559] ? set_load_weight+0x270/0x270
    [ 430.313559] ? __switch_to_asm+0x34/0x70
    [ 430.313559] ? __switch_to_asm+0x40/0x70
    [ 430.313559] ? __switch_to_asm+0x34/0x70
    [ 430.313559] ? __switch_to_asm+0x34/0x70
    [ 430.313559] ? __switch_to_asm+0x40/0x70
    [ 430.313559] ? __switch_to_asm+0x34/0x70
    [ 430.313559] ? __switch_to_asm+0x40/0x70
    [ 430.313559] ? __switch_to_asm+0x34/0x70
    [ 430.313559] ? __switch_to_asm+0x34/0x70
    [ 430.313559] ? __switch_to_asm+0x40/0x70
    [ 430.313559] ? __switch_to_asm+0x34/0x70
    [ 430.313559] ? __schedule+0x6d3/0x1f50
    [ 430.313559] ? find_held_lock+0x39/0x1c0
    [ 430.313559] ? __sched_text_start+0x8/0x8
    [ 430.313559] ? cyc2ns_read_end+0x10/0x10
    [ 430.313559] ? save_trace+0x300/0x300
    [ 430.313559] ? sched_clock_local+0xd4/0x140
    [ 430.313559] ? find_held_lock+0x39/0x1c0
    [ 430.313559] ? worker_thread+0x353/0x1120
    [ 430.313559] ? worker_thread+0x353/0x1120
    [ 430.313559] ? lock_contended+0xe70/0xe70
    [ 430.313559] ? __lock_acquire+0x4500/0x4500
    [ 430.535635] ? do_raw_spin_unlock+0xa5/0x330
    [ 430.535635] ? do_raw_spin_trylock+0x101/0x1a0
    [ 430.535635] ? do_raw_spin_lock+0x1f0/0x1f0
    [ 430.535635] ? _raw_spin_lock_irq+0x10/0x70
    [ 430.535635] worker_thread+0x15d/0x1120
    [ ... ]

    Fixes: 8d8540c4f5e0 ("netfilter: nft_set_rbtree: add timeout support")
    Signed-off-by: Taehee Yoo
    Signed-off-by: Pablo Neira Ayuso

    Taehee Yoo