11 Sep, 2012

1 commit

  • It is a frequent mistake to confuse the netlink port identifier with a
    process identifier. Try to reduce this confusion by renaming fields
    that hold port identifiers portid instead of pid.

    I have carefully avoided changing the structures exported to
    userspace to avoid changing the userspace API.

    I have successfully built an allyesconfig kernel with this change.

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

    Eric W. Biederman
     

09 Sep, 2012

2 commits

  • This patch defines netlink_kernel_create as a wrapper function of
    __netlink_kernel_create to hide the struct module *me parameter
    (which seems to be THIS_MODULE in all existing netlink subsystems).

    Suggested by David S. Miller.

    Signed-off-by: Pablo Neira Ayuso
    Signed-off-by: David S. Miller

    Pablo Neira Ayuso
     
  • Replace netlink_set_nonroot by one new field `flags' in
    struct netlink_kernel_cfg that is passed to netlink_kernel_create.

    This patch also renames NL_NONROOT_* to NL_CFG_F_NONROOT_* since
    now the flags field in nl_table is generic (so we can add more
    flags if needed in the future).

    Also adjust all callers in the net-next tree to use these flags
    instead of netlink_set_nonroot.

    Signed-off-by: Pablo Neira Ayuso
    Signed-off-by: David S. Miller

    Pablo Neira Ayuso
     

08 Sep, 2012

9 commits

  • mdio-mux-mmioreg.c uses function of_address_to_resource(), which is defined
    in linux/of_address.h. This fixes a compilation error:

    drivers/net/phy/mdio-mux-mmioreg.c: In function 'mdio_mux_mmioreg_probe':
    drivers/net/phy/mdio-mux-mmioreg.c:83:2: error: implicit declaration of
    function 'of_address_to_resource'

    Reported-by: Randy Dunlap
    Signed-off-by: Timur Tabi
    Signed-off-by: David S. Miller

    Timur Tabi
     
  • We dont use jhash anymore since route cache removal,
    so we can get rid of get_random_bytes() calls for rt_genid
    changes.

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

    Eric Dumazet
     
  • Refactoring the bind code lets us use a common driver_info struct
    for all supported devices, simplifying the code a bit. The
    real advantage is that devices using the CDC ECM interface
    layout now also can be added dynamically using the new_id sysfs
    interface. This simplifies testing of new devices.

    Signed-off-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Bjørn Mork
     
  • QMI requests exceeding 1500 bytes are possible and
    device firmware does not handle fragmented messages
    very well. It is therefore necessary to increase
    the maximum message size from the current 512 bytes.

    The protocol message size limit is not documented
    in any publicly known source, but the out of tree
    driver from CodeAurora use 4 kB. This is therefore
    chosen as the new arbitrary default until the real
    limit is known.

    This should allow any QMI message to be transmitted
    without fragmentation, fixing known issues with GPS
    assistance data upload.

    Signed-off-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Bjørn Mork
     
  • Since route cache deletion (89aef8921bfbac22f), delay is no
    more used. Remove it.

    Signed-off-by: Nicolas Dichtel
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Nicolas Dichtel
     
  • Passing uids and gids on NETLINK_CB from a process in one user
    namespace to a process in another user namespace can result in the
    wrong uid or gid being presented to userspace. Avoid that problem by
    passing kuids and kgids instead.

    - define struct scm_creds for use in scm_cookie and netlink_skb_parms
    that holds uid and gid information in kuid_t and kgid_t.

    - Modify scm_set_cred to fill out scm_creds by heand instead of using
    cred_to_ucred to fill out struct ucred. This conversion ensures
    userspace does not get incorrect uid or gid values to look at.

    - Modify scm_recv to convert from struct scm_creds to struct ucred
    before copying credential values to userspace.

    - Modify __scm_send to populate struct scm_creds on in the scm_cookie,
    instead of just copying struct ucred from userspace.

    - Modify netlink_sendmsg to copy scm_creds instead of struct ucred
    into the NETLINK_CB.

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

    Eric W. Biederman
     
  • igmp should call consume_skb() for all correctly processed packets,
    to avoid false dropwatch/drop_monitor false positives.

    Reported-by: Shawn Bohrer
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • removes unnecessary semicolon

    Found by Coccinelle: http://coccinelle.lip6.fr/

    Signed-off-by: Peter Senna Tschudin
    Signed-off-by: David S. Miller

    Peter Senna Tschudin
     
  • It's the same problem that previous fix about blackhole and prohibit routes.

    When adding a throw route, it was handled like a classic route.
    Moreover, it was only possible to add this kind of routes by specifying
    an interface.

    Before the patch:
    $ ip route add throw 2001::2/128
    RTNETLINK answers: No such device
    $ ip route add throw 2001::2/128 dev eth0
    $ ip -6 route | grep 2001::2
    2001::2 dev eth0 metric 1024

    After:
    $ ip route add throw 2001::2/128
    $ ip -6 route | grep 2001::2
    throw 2001::2 dev lo metric 1024 error -11

    Reported-by: Markus Stenberg
    Signed-off-by: Nicolas Dichtel
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Nicolas Dichtel
     

07 Sep, 2012

1 commit

  • Fengguang Wu reported various panics and bisected to commit
    8336886f786fdac (tcp: TCP Fast Open Server - support TFO listeners)

    Fix this by making sure socket is a TCP socket before accessing TFO data
    structures.

    [ 233.046014] kfree_debugcheck: out of range ptr ea6000000bb8h.
    [ 233.047399] ------------[ cut here ]------------
    [ 233.048393] kernel BUG at /c/kernel-tests/src/stable/mm/slab.c:3074!
    [ 233.048393] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
    [ 233.048393] Modules linked in:
    [ 233.048393] CPU 0
    [ 233.048393] Pid: 3929, comm: trinity-watchdo Not tainted 3.6.0-rc3+
    #4192 Bochs Bochs
    [ 233.048393] RIP: 0010:[] []
    kfree_debugcheck+0x27/0x2d
    [ 233.048393] RSP: 0018:ffff88000facbca8 EFLAGS: 00010092
    [ 233.048393] RAX: 0000000000000031 RBX: 0000ea6000000bb8 RCX:
    00000000a189a188
    [ 233.048393] RDX: 000000000000a189 RSI: ffffffff8108ad32 RDI:
    ffffffff810d30f9
    [ 233.048393] RBP: ffff88000facbcb8 R08: 0000000000000002 R09:
    ffffffff843846f0
    [ 233.048393] R10: ffffffff810ae37c R11: 0000000000000908 R12:
    0000000000000202
    [ 233.048393] R13: ffffffff823dbd5a R14: ffff88000ec5bea8 R15:
    ffffffff8363c780
    [ 233.048393] FS: 00007faa6899c700(0000) GS:ffff88001f200000(0000)
    knlGS:0000000000000000
    [ 233.048393] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    [ 233.048393] CR2: 00007faa6841019c CR3: 0000000012c82000 CR4:
    00000000000006f0
    [ 233.048393] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
    0000000000000000
    [ 233.048393] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7:
    0000000000000400
    [ 233.048393] Process trinity-watchdo (pid: 3929, threadinfo
    ffff88000faca000, task ffff88000faec600)
    [ 233.048393] Stack:
    [ 233.048393] 0000000000000000 0000ea6000000bb8 ffff88000facbce8
    ffffffff8116ad81
    [ 233.048393] ffff88000ff588a0 ffff88000ff58850 ffff88000ff588a0
    0000000000000000
    [ 233.048393] ffff88000facbd08 ffffffff823dbd5a ffffffff823dbcb0
    ffff88000ff58850
    [ 233.048393] Call Trace:
    [ 233.048393] [] kfree+0x5f/0xca
    [ 233.048393] [] inet_sock_destruct+0xaa/0x13c
    [ 233.048393] [] ? inet_sk_rebuild_header
    +0x319/0x319
    [ 233.048393] [] __sk_free+0x21/0x14b
    [ 233.048393] [] sk_free+0x26/0x2a
    [ 233.048393] [] sctp_close+0x215/0x224
    [ 233.048393] [] ? lock_release+0x16f/0x1b9
    [ 233.048393] [] inet_release+0x7e/0x85
    [ 233.048393] [] sock_release+0x1f/0x77
    [ 233.048393] [] sock_close+0x27/0x2b
    [ 233.048393] [] __fput+0x101/0x20a
    [ 233.048393] [] ____fput+0xe/0x10
    [ 233.048393] [] task_work_run+0x5d/0x75
    [ 233.048393] [] do_exit+0x290/0x7f5
    [ 233.048393] [] ? retint_swapgs+0x13/0x1b
    [ 233.048393] [] do_group_exit+0x7b/0xba
    [ 233.048393] [] sys_exit_group+0x17/0x17
    [ 233.048393] [] tracesys+0xdd/0xe2
    [ 233.048393] Code: 59 01 5d c3 55 48 89 e5 53 41 50 0f 1f 44 00 00 48
    89 fb e8 d4 b0 f0 ff 84 c0 75 11 48 89 de 48 c7 c7 fc fa f7 82 e8 0d 0f
    57 01 0b 5f 5b 5d c3 55 48 89 e5 0f 1f 44 00 00 48 63 87 d8 00 00
    [ 233.048393] RIP [] kfree_debugcheck+0x27/0x2d
    [ 233.048393] RSP

    Reported-by: Fengguang Wu
    Tested-by: Fengguang Wu
    Signed-off-by: Eric Dumazet
    Cc: "H.K. Jerry Chu"
    Acked-by: Neal Cardwell
    Acked-by: H.K. Jerry Chu
    Signed-off-by: David S. Miller

    Eric Dumazet
     

06 Sep, 2012

10 commits

  • When adding a blackhole or a prohibit route, they were handling like classic
    routes. Moreover, it was only possible to add this kind of routes by specifying
    an interface.

    Bug already reported here:
    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=498498

    Before the patch:
    $ ip route add blackhole 2001::1/128
    RTNETLINK answers: No such device
    $ ip route add blackhole 2001::1/128 dev eth0
    $ ip -6 route | grep 2001
    2001::1 dev eth0 metric 1024

    After:
    $ ip route add blackhole 2001::1/128
    $ ip -6 route | grep 2001
    blackhole 2001::1 dev lo metric 1024 error -22

    v2: wrong patch
    v3: add a field fc_type in struct fib6_config to store RTN_* type

    Signed-off-by: Nicolas Dichtel
    Signed-off-by: David S. Miller

    Nicolas Dichtel
     
  • This patch allows code to handle the PCIe AER capability.
    The PCI callbacks for error handling/reset/recovery already exist in be2net
    and have been tested with EEH/ppc.
    This patch has been tested using the aer-inject tool.

    Signed-off-by: Sathya Perla
    Signed-off-by: David S. Miller

    Sathya Perla
     
  • It seems we need to provide ability for stacked devices
    to use specific lock_class_key for sch->busylock

    We could instead default l2tpeth tx_queue_len to 0 (no qdisc), but
    a user might use a qdisc anyway.

    (So same fixes are probably needed on non LLTX stacked drivers)

    Noticed while stressing L2TPV3 setup :

    ======================================================
    [ INFO: possible circular locking dependency detected ]
    3.6.0-rc3+ #788 Not tainted
    -------------------------------------------------------
    netperf/4660 is trying to acquire lock:
    (l2tpsock){+.-...}, at: [] l2tp_xmit_skb+0x172/0xa50 [l2tp_core]

    but task is already holding lock:
    (&(&sch->busylock)->rlock){+.-...}, at: [] dev_queue_xmit+0xd75/0xe00

    which lock already depends on the new lock.

    the existing dependency chain (in reverse order) is:

    -> #1 (&(&sch->busylock)->rlock){+.-...}:
    [] lock_acquire+0x90/0x200
    [] _raw_spin_lock_irqsave+0x4c/0x60
    [] __wake_up+0x32/0x70
    [] tty_wakeup+0x3e/0x80
    [] pty_write+0x73/0x80
    [] tty_put_char+0x3c/0x40
    [] process_echoes+0x142/0x330
    [] n_tty_receive_buf+0x8fb/0x1230
    [] flush_to_ldisc+0x142/0x1c0
    [] process_one_work+0x198/0x760
    [] worker_thread+0x186/0x4b0
    [] kthread+0x93/0xa0
    [] kernel_thread_helper+0x4/0x10

    -> #0 (l2tpsock){+.-...}:
    [] __lock_acquire+0x1628/0x1b10
    [] lock_acquire+0x90/0x200
    [] _raw_spin_lock+0x41/0x50
    [] l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
    [] l2tp_eth_dev_xmit+0x32/0x60 [l2tp_eth]
    [] dev_hard_start_xmit+0x502/0xa70
    [] sch_direct_xmit+0xfe/0x290
    [] dev_queue_xmit+0x1e5/0xe00
    [] ip_finish_output+0x3d0/0x890
    [] ip_output+0x59/0xf0
    [] ip_local_out+0x2d/0xa0
    [] ip_queue_xmit+0x1c3/0x680
    [] tcp_transmit_skb+0x402/0xa60
    [] tcp_write_xmit+0x1f4/0xa30
    [] tcp_push_one+0x30/0x40
    [] tcp_sendmsg+0xe82/0x1040
    [] inet_sendmsg+0x125/0x230
    [] sock_sendmsg+0xdc/0xf0
    [] sys_sendto+0xfe/0x130
    [] system_call_fastpath+0x16/0x1b
    Possible unsafe locking scenario:

    CPU0 CPU1
    ---- ----
    lock(&(&sch->busylock)->rlock);
    lock(l2tpsock);
    lock(&(&sch->busylock)->rlock);
    lock(l2tpsock);

    *** DEADLOCK ***

    5 locks held by netperf/4660:
    #0: (sk_lock-AF_INET){+.+.+.}, at: [] tcp_sendmsg+0x2c/0x1040
    #1: (rcu_read_lock){.+.+..}, at: [] ip_queue_xmit+0x0/0x680
    #2: (rcu_read_lock_bh){.+....}, at: [] ip_finish_output+0x135/0x890
    #3: (rcu_read_lock_bh){.+....}, at: [] dev_queue_xmit+0x0/0xe00
    #4: (&(&sch->busylock)->rlock){+.-...}, at: [] dev_queue_xmit+0xd75/0xe00

    stack backtrace:
    Pid: 4660, comm: netperf Not tainted 3.6.0-rc3+ #788
    Call Trace:
    [] print_circular_bug+0x1fb/0x20c
    [] __lock_acquire+0x1628/0x1b10
    [] ? check_usage+0x9b/0x4d0
    [] ? __lock_acquire+0x2e4/0x1b10
    [] lock_acquire+0x90/0x200
    [] ? l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
    [] _raw_spin_lock+0x41/0x50
    [] ? l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
    [] l2tp_xmit_skb+0x172/0xa50 [l2tp_core]
    [] l2tp_eth_dev_xmit+0x32/0x60 [l2tp_eth]
    [] dev_hard_start_xmit+0x502/0xa70
    [] ? dev_hard_start_xmit+0x5e/0xa70
    [] ? dev_queue_xmit+0x141/0xe00
    [] sch_direct_xmit+0xfe/0x290
    [] dev_queue_xmit+0x1e5/0xe00
    [] ? dev_hard_start_xmit+0xa70/0xa70
    [] ip_finish_output+0x3d0/0x890
    [] ? ip_finish_output+0x135/0x890
    [] ip_output+0x59/0xf0
    [] ip_local_out+0x2d/0xa0
    [] ip_queue_xmit+0x1c3/0x680
    [] ? ip_local_out+0xa0/0xa0
    [] tcp_transmit_skb+0x402/0xa60
    [] ? tcp_md5_do_lookup+0x18e/0x1a0
    [] tcp_write_xmit+0x1f4/0xa30
    [] tcp_push_one+0x30/0x40
    [] tcp_sendmsg+0xe82/0x1040
    [] inet_sendmsg+0x125/0x230
    [] ? inet_create+0x6b0/0x6b0
    [] ? sock_update_classid+0xc2/0x3b0
    [] ? sock_update_classid+0x130/0x3b0
    [] sock_sendmsg+0xdc/0xf0
    [] ? fget_light+0x3f9/0x4f0
    [] sys_sendto+0xfe/0x130
    [] ? trace_hardirqs_on+0xd/0x10
    [] ? _raw_spin_unlock_irq+0x30/0x50
    [] ? finish_task_switch+0x83/0xf0
    [] ? finish_task_switch+0x46/0xf0
    [] ? sysret_check+0x1b/0x56
    [] system_call_fastpath+0x16/0x1b

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

    Eric Dumazet
     
  • Using list_move_tail() instead of list_del() + list_add_tail().

    spatch with a semantic match is used to found this problem.
    (http://coccinelle.lip6.fr/)

    Signed-off-by: Wei Yongjun
    Signed-off-by: David S. Miller

    Wei Yongjun
     
  • Fixes this build error:

    net/ipv6/netfilter/nf_nat_l3proto_ipv6.c: In function 'nf_nat_ipv6_csum_recalc':
    net/ipv6/netfilter/nf_nat_l3proto_ipv6.c:144:4: error: implicit declaration of function 'csum_ipv6_magic' [-Werror=implicit-function-declaration]

    Signed-off-by: Stephen Rothwell
    Signed-off-by: David S. Miller

    Stephen Rothwell
     
  • Removed duplicate definition for SGE_PF_KDOORBELL, SGE_INT_ENABLE3,
    PCIE_MEM_ACCESS_OFFSET registers.
    Moved the register field definitions around the register definition.

    Signed-off-by: Santosh Rastapur
    Signed-off-by: Vipul Pandya
    Reviewed-by: Sivakumar Subramani
    Signed-off-by: David S. Miller

    Vipul Pandya
     
  • cxgb4 driver has duplicate definitions of registers which will be removed. This
    patch updates the RDMA/cxgb4 driver accordingly.

    Signed-off-by: Santosh Rastapur
    Signed-off-by: Vipul Pandya
    Reviewed-by: Sivakumar Subramani
    Signed-off-by: David S. Miller

    Vipul Pandya
     
  • Currently when the NIC duplex state is DUPLEX_UNKNOWN it is exported as
    full through sysfs, this patch adds support for DUPLEX_UNKNOWN. It is
    handled the same way as in ethtool.

    Signed-off-by: Nikolay Aleksandrov

    Signed-off-by: David S. Miller

    Nikolay Aleksandrov
     
  • This reverts commit 5d65878d7031b6c39054b282faceff406bb2fda9.
    The upper layers call usbnet_start_xmit() with a valid skb.
    However cdc_ncm abuses this method by calling it with NULL
    to trigger IO for the aggregated private skb holding erlier
    packets. Until cdc_ncm is fixed, the check for NULL must
    be reintroduced.

    Signed-off-by: Oliver Neukum
    Signed-off-by: David S. Miller

    Oliver Neukum
     
  • Add support for genl "tcp_metrics". No locking
    is changed, only that now we can unlink and delete
    entries after grace period. We implement get/del for
    single entry and dump to support show/flush filtering
    in user space. Del without address attribute causes
    flush for all addresses, sadly under genl_mutex.

    v2:
    - remove rcu_assign_pointer as suggested by Eric Dumazet,
    it is not needed because there are no other writes under lock
    - move the flushing code in tcp_metrics_flush_all

    v3:
    - remove synchronize_rcu on flush as suggested by Eric Dumazet

    Signed-off-by: Julian Anastasov
    Signed-off-by: David S. Miller

    Julian Anastasov
     

05 Sep, 2012

10 commits

  • Remove a for loop that does nothing in ixgbe_probe().
    This is a remnant from when we had IO bars (compare to the ixgb code).

    Signed-off-by: Eliezer Tamir
    Tested-by: Phil Schmitt
    Signed-off-by: Jeff Kirsher

    Eliezer Tamir
     
  • This patch add ethtool supports for Supported and Advertised Pause Frame,
    based on Adapter Flow Control settings.

    Signed-off-by: Akeem G. Abodunrin
    Tested-by: Jeff Pieper
    Signed-off-by: Jeff Kirsher

    Akeem G. Abodunrin
     
  • Reduce skb truesize by 256 bytes.

    Signed-off-by: Eric Dumazet
    Cc: Alexander Duyck
    Tested-by: Aaron Brown
    Signed-off-by: Jeff Kirsher

    Eric Dumazet
     
  • Early release of i210 devices had the loopback test of the ethtool
    self-test disabled. This patch enables the loopback test for i210 devices.

    Signed-off-by: Carolyn Wyborny
    Tested-by: Jeff Pieper
    Signed-off-by: Jeff Kirsher

    Carolyn Wyborny
     
  • lsof reports some of socket descriptors as "can't identify protocol" like:

    [yamato@localhost]/tmp% sudo lsof | grep dbus | grep iden
    dbus-daem 652 dbus 6u sock ... 17812 can't identify protocol
    dbus-daem 652 dbus 34u sock ... 24689 can't identify protocol
    dbus-daem 652 dbus 42u sock ... 24739 can't identify protocol
    dbus-daem 652 dbus 48u sock ... 22329 can't identify protocol
    ...

    lsof cannot resolve the protocol used in a socket because procfs
    doesn't provide the map between inode number on sockfs and protocol
    type of the socket.

    For improving the situation this patch adds an extended attribute named
    'system.sockprotoname' in which the protocol name for
    /proc/PID/fd/SOCKET is stored. So lsof can know the protocol for a
    given /proc/PID/fd/SOCKET with getxattr system call.

    A few weeks ago I submitted a patch for the same purpose. The patch
    was introduced /proc/net/sockfs which enumerates inodes and protocols
    of all sockets alive on a system. However, it was rejected because (1)
    a global lock was needed, and (2) the layout of struct socket was
    changed with the patch.

    This patch doesn't use any global lock; and doesn't change the layout
    of any structs.

    In this patch, a protocol name is stored to dentry->d_name of sockfs
    when new socket is associated with a file descriptor. Before this
    patch dentry->d_name was not used; it was just filled with empty
    string. lsof may use an extended attribute named
    'system.sockprotoname' to retrieve the value of dentry->d_name.

    It is nice if we can see the protocol name with ls -l
    /proc/PID/fd. However, "socket:[#INODE]", the name format returned
    from sockfs_dname() was already defined. To keep the compatibility
    between kernel and user land, the extended attribute is used to
    prepare the value of dentry->d_name.

    Signed-off-by: Masatake YAMATO
    Signed-off-by: David S. Miller

    Masatake YAMATO
     
  • David S. Miller
     
  • Driver for the Microchip MRF24J40 802.15.4 WPAN module.

    Signed-off-by: Alan Ott
    Signed-off-by: David S. Miller

    Alan Ott
     
  • Stephen Rothwell says:

    ====================
    After merging the final tree, today's linux-next build (powerpc
    ppc44x_defconfig) failed like this:

    net/built-in.o: In function `tcp_fastopen_ctx_free':
    tcp_fastopen.c:(.text+0x5cc5c): undefined reference to `crypto_destroy_tfm'
    net/built-in.o: In function `tcp_fastopen_reset_cipher':
    (.text+0x5cccc): undefined reference to `crypto_alloc_base'
    net/built-in.o: In function `tcp_fastopen_reset_cipher':
    (.text+0x5cd6c): undefined reference to `crypto_destroy_tfm'

    Presumably caused by commit 104671636897 ("tcp: TCP Fast Open Server -
    header & support functions") from the net-next tree. I assume that some
    dependency on the CRYPTO infrastructure is missing.

    I have reverted commit 1bed966cc3bd ("Merge branch
    'tcp_fastopen_server'") for today.
    ====================

    Reported-by: Stephen Rothwell
    Signed-off-by: David S. Miller

    David S. Miller
     
  • Using list_move_tail() instead of list_del() + list_add_tail().

    spatch with a semantic match is used to found this problem.
    (http://coccinelle.lip6.fr/)

    Signed-off-by: Wei Yongjun
    Signed-off-by: David S. Miller

    Wei Yongjun
     
  • usbnet_start_xmit() is always called with a valid skb

    Signed-off-by: Oliver Neukum
    Signed-off-by: David S. Miller

    Oliver Neukum
     

04 Sep, 2012

7 commits