03 Apr, 2013

3 commits

  • currently cbq works incorrectly for limits > 10% real link bandwidth,
    and practically does not work for limits > 50% real link bandwidth.
    Below are results of experiments taken on 1 Gbit link

    In shaper | Actual Result
    -----------+---------------
    100M | 108 Mbps
    200M | 244 Mbps
    300M | 412 Mbps
    500M | 893 Mbps

    This happen because of q->now changes incorrectly in cbq_dequeue():
    when it is called before real end of packet transmitting,
    L2T is greater than real time delay, q_now gets an extra boost
    but never compensate it.

    To fix this problem we prevent change of q->now until its synchronization
    with real time.

    Signed-off-by: Vasily Averin
    Reviewed-by: Alexey Kuznetsov
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Vasily Averin
     
  • Commit 6bbb6d9 "net/mlx4_en: Optimize Rx fast path filter checks" introduced a regression
    under which the MAC address read from the card was not converted correctly
    (the most significant byte was not handled), fix that.

    Reviewed-by: Or Gerlitz
    Signed-off-by: Yan Burman
    Signed-off-by: David S. Miller

    Yan Burman
     
  • Now that netdev_rx_handler_unregister contains synchronize_net(), we need
    to call it outside of bond->lock, cause it might sleep. Also, remove the
    already unneded synchronize_net().

    Signed-off-by: Veaceslav Falico
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Veaceslav Falico
     

02 Apr, 2013

8 commits

  • Pull ARM SoC bug fixes from Arnd Bergmann:
    "After a quiet set of fixes for 3.9-rc4, a lot of people woke up and
    sent urgent fixes for 3.9. I pushed back on a number of them that got
    deferred to 3.10, but these are the ones that seemed important.

    Regression in 3.9:

    - Multiple regressions in OMAP2+ clock cleanup
    - SH-Mobile frame buffer bug fix that merged here because of
    maintainer MIA
    - ux500 prcmu changes broke DT booting
    - MMCI duplicated regulator setup on ux500
    - New ux500 clock driver broke ethernet on snowball
    - Local interrupt driver for mvebu broke ethernet
    - MVEBU GPIO driver did not get set up right on Orion DT
    - incorrect interrupt number on Orion crypto for DT

    Long-standing bugs, including candidates for stable:

    - Kirkwood MMC needs to disable invalid card detect pins
    - MV SDIO pinmux was wrong on Mirabox
    - GoFlex Net board file needs to set NAND chip delay
    - MSM timer restart race
    - ep93xx early debug code broke in 3.7
    - i.MX CPU hotplug race
    - Incorrect clock setup for OMAP1 USB
    - Workaround for bad clock setup by some old OMAP4 boot loaders
    - Static I/O mappings on cns3xxx since 3.2"

    * tag 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: cns3xxx: fix mapping of private memory region
    arm: mvebu: Fix pinctrl for Armada 370 Mirabox SDIO port.
    arm: orion5x: correct IRQ used in dtsi for mv_cesa
    arm: orion5x: fix orion5x.dtsi gpio parameters
    ARM: Kirkwood: fix unused mvsdio gpio pins
    arm: mvebu: Use local interrupt only for the timer 0
    ARM: kirkwood: Fix chip-delay for GoFlex Net
    ARM: ux500: Enable the clock controlling Ethernet on Snowball
    ARM: ux500: Stop passing ios_handler() as an MMCI power controlling call-back
    ARM: ux500: Apply the TCPM and TCDM locations and sizes to dbx5x0 DT
    fbdev: sh_mobile_lcdc: fixup B side hsync adjust settings
    ARM: OMAP: clocks: Delay clk inits atleast until slab is initialized
    ARM: imx: fix sync issue between imx_cpu_die and imx_cpu_kill
    ARM: msm: Stop counting before reprogramming clockevent
    ARM: ep93xx: Fix wait for UART FIFO to be empty
    ARM: OMAP4: PM: fix PM regression introduced by recent clock cleanup
    ARM: OMAP3: hwmod data: keep MIDLEMODE in force-standby for musb
    ARM: OMAP4: clock data: lock USB DPLL on boot
    ARM: OMAP1: fix USB host on 1710

    Linus Torvalds
     
  • Pull nfsd bugfix from J Bruce Fields:
    "An xdr decoding error--thanks, Toralf Förster, and Trinity!"

    * 'for-3.9' of git://linux-nfs.org/~bfields/linux:
    nfsd4: reject "negative" acl lengths

    Linus Torvalds
     
  • From Anton Vorontsov :

    This tag includes Mac Lin's work to revive CNS3xxx booting:

    "Since commit 0536bdf33faf (ARM: move iotable mappings within the vmalloc
    region), [...] the pre-defined iotable mappings is not in the vmalloc
    region. [...] move the iotable mappings into the vmalloc region, and
    merge the MPCore private memory region (containing the SCU, the GIC and
    the TWD) as a single region."

    Plus there is a small cosmetic fix, also from Mac Lin.

    * tag 'v3.9-rc1_cns3xxx_fixes' of git://git.infradead.org/users/cbou/linux-cns3xxx:
    ARM: cns3xxx: fix mapping of private memory region

    [arnd: dropped the cosmetic fix from the merge as it is not needed for 3.9]

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • Pull virtio fixes from Rusty Russell:
    "One reversion, a tiny leak fix, and a cc:stable locking fix, in two
    parts"

    * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
    virtio: console: add locking around c_ovq operations
    virtio: console: rename cvq_lock to c_ivq_lock
    hw_random: free rng_buffer at module exit
    Revert "virtio_console: Initialize guest_connected=true for rproc_serial"

    Linus Torvalds
     
  • struct block_device lifecycle is defined by its inode (see fs/block_dev.c) -
    block_device allocated first time we access /dev/loopXX and deallocated on
    bdev_destroy_inode. When we create the device "losetup /dev/loopXX afile"
    we want that block_device stay alive until we destroy the loop device
    with "losetup -d".

    But because we do not hold /dev/loopXX inode its counter goes 0, and
    inode/bdev can be destroyed at any moment. Usually it happens at memory
    pressure or when user drops inode cache (like in the test below). When later in
    loop_clr_fd() we want to use bdev we have use-after-free error with following
    stack:

    BUG: unable to handle kernel NULL pointer dereference at 0000000000000280
    bd_set_size+0x10/0xa0
    loop_clr_fd+0x1f8/0x420 [loop]
    lo_ioctl+0x200/0x7e0 [loop]
    lo_compat_ioctl+0x47/0xe0 [loop]
    compat_blkdev_ioctl+0x341/0x1290
    do_filp_open+0x42/0xa0
    compat_sys_ioctl+0xc1/0xf20
    do_sys_open+0x16e/0x1d0
    sysenter_dispatch+0x7/0x1a

    To prevent use-after-free we need to grab the device in loop_set_fd()
    and put it later in loop_clr_fd().

    The issue is reprodusible on current Linus head and v3.3. Here is the test:

    dd if=/dev/zero of=loop.file bs=1M count=1
    while [ true ]; do
    losetup /dev/loop0 loop.file
    echo 2 > /proc/sys/vm/drop_caches
    losetup -d /dev/loop0
    done

    [ Doing bdgrab/bput in loop_set_fd/loop_clr_fd is safe, because every
    time we call loop_set_fd() we check that loop_device->lo_state is
    Lo_unbound and set it to Lo_bound If somebody will try to set_fd again
    it will get EBUSY. And if we try to loop_clr_fd() on unbound loop
    device we'll get ENXIO.

    loop_set_fd/loop_clr_fd (and any other loop ioctl) is called under
    loop_device->lo_ctl_mutex. ]

    Signed-off-by: Anatol Pomozov
    Cc: Al Viro
    Signed-off-by: Linus Torvalds

    Anatol Pomozov
     
  • Pull tegra clock driver fix from Mike Turquette:
    "Missing base address in Tegra clock driver results in non-operational
    PCIe. On some devices this means that Ethernet will go uninitialized
    and other devices will fail. This pull request fixes it with a single
    patch to pass the proper base address in the Tegra clock driver."

    * tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mturquette/linux:
    clk: tegra: Allow PLLE training to succeed

    Linus Torvalds
     
  • Pull FCoE fixes from Robert Love:
    "Critical patches to fix FCoE VN2VN mode with new interfaces targeting
    3.9-rc"

    * tag 'for-3.9-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/rwlove/fcoe:
    libfcoe: Fix fcoe_sysfs VN2VN mode
    libfc, fcoe, bnx2fc: Split fc_disc_init into fc_disc_{init, config}
    libfc, fcoe, bnx2fc: Always use fcoe_disc_init for discovery layer initialization
    fcoe: Fix deadlock between create and destroy paths
    bnx2fc: Make the fcoe_cltr the SCSI host parent

    Linus Torvalds
     
  • Under some circumstances the PLLE needs to be retrained, in which case
    access to the PMC registers is required. Fix this by passing a pointer
    to the PMC registers instead of NULL when registering the PLLE clock.

    Signed-off-by: Thierry Reding
    Acked-By: Peter De Schrijver
    Signed-off-by: Mike Turquette

    Thierry Reding
     

01 Apr, 2013

11 commits

  • Pull arch/tile fix from Chris Metcalf:
    "This change allows newer Tilera boot tools to work correctly with
    current (and stable) kernels by using the right filename to get the
    initramfs from the Tilera hypervisor filesystem."

    * 'stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
    tile: expect new initramfs name from hypervisor file system

    Linus Torvalds
     
  • Pull networking fixes from David Miller:

    1) sadb_msg prepared for IPSEC userspace forgets to initialize the
    satype field, fix from Nicolas Dichtel.

    2) Fix mac80211 synchronization during station removal, from Johannes
    Berg.

    3) Fix IPSEC sequence number notifications when they wrap, from Steffen
    Klassert.

    4) Fix cfg80211 wdev tracing crashes when add_virtual_intf() returns an
    error pointer, from Johannes Berg.

    5) In mac80211, don't call into the channel context code with the
    interface list mutex held. From Johannes Berg.

    6) In mac80211, if we don't actually associate, do not restart the STA
    timer, otherwise we can crash. From Ben Greear.

    7) Missing dma_mapping_error() check in e1000, ixgb, and e1000e. From
    Christoph Paasch.

    8) Fix sja1000 driver defines to not conflict with SH port, from Marc
    Kleine-Budde.

    9) Don't call il4965_rs_use_green with a NULL station, from Colin Ian
    King.

    10) Suspend/Resume in the FEC driver fail because the buffer descriptors
    are not initialized at all the moments in which they should. Fix
    from Frank Li.

    11) cpsw and davinci_emac drivers both use the wrong interface to
    restart a stopped TX queue. Use netif_wake_queue not
    netif_start_queue, the latter is for initialization/bringup not
    active management of the queue. From Mugunthan V N.

    12) Fix regression in rate calculations done by
    psched_ratecfg_precompute(), missing u64 type promotion. From
    Sergey Popovich.

    13) Fix length overflow in tg3 VPD parsing, from Kees Cook.

    14) AOE driver fails to allocate enough headroom, resulting in crashes.
    Fix from Eric Dumazet.

    15) RX overflow happens too quickly in sky2 driver because pause packet
    thresholds are not programmed correctly. From Mirko Lindner.

    16) Bonding driver manages arp_interval and miimon settings incorrectly,
    disabling one unintentionally disables both. Fix from Nikolay
    Aleksandrov.

    17) smsc75xx drivers don't program the RX mac properly for jumbo frames.
    Fix from Steve Glendinning.

    18) Fix off-by-one in Codel packet scheduler. From Vijay Subramanian.

    19) Fix packet corruption in atl1c by disabling MSI support, from Hannes
    Frederic Sowa.

    20) netdev_rx_handler_unregister() needs a synchronize_net() to fix
    crashes in bonding driver unload stress tests. From Eric Dumazet.

    21) rxlen field of ks8851 RX packet descriptors not interpreted
    correctly (it is 12 bits not 16 bits, so needs to be masked after
    shifting the 32-bit value down 16 bits). Fix from Max Nekludov.

    22) Fix missed RX/TX enable in sh_eth driver due to mishandling of link
    change indications. From Sergei Shtylyov.

    23) Fix crashes during spurious ECI interrupts in sh_eth driver, also
    from Sergei Shtylyov.

    24) dm9000 driver initialization is done wrong for revision B devices
    with DSP PHY, from Joseph CHANG.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (53 commits)
    DM9000B: driver initialization upgrade
    sh_eth: make 'link' field of 'struct sh_eth_private' *int*
    sh_eth: workaround for spurious ECI interrupt
    sh_eth: fix handling of no LINK signal
    ks8851: Fix interpretation of rxlen field.
    net: add a synchronize_net() in netdev_rx_handler_unregister()
    MAINTAINERS: Update netxen_nic maintainers list
    atl1e: drop pci-msi support because of packet corruption
    net: fq_codel: Fix off-by-one error
    net: calxedaxgmac: Wake-on-LAN fixes
    net: calxedaxgmac: fix rx ring handling when OOM
    net: core: Remove redundant call to 'nf_reset' in 'dev_forward_skb'
    smsc75xx: fix jumbo frame support
    net: fix the use of this_cpu_ptr
    bonding: fix disabling of arp_interval and miimon
    ipv6: don't accept node local multicast traffic from the wire
    sky2: Threshold for Pause Packet is set wrong
    sky2: Receive Overflows not counted
    aoe: reserve enough headroom on skbs
    line up comment for ndo_bridge_getlink
    ...

    Linus Torvalds
     
  • Fix bug for DM9000 revision B which contain a DSP PHY

    DM9000B use DSP PHY instead previouse DM9000 revisions' analog PHY,
    So need extra change in initialization, For
    explicity PHY Reset and PHY init parameter, and
    first DM9000_NCR reset need NCR_MAC_LBK bit by dm9000_probe().

    Following DM9000_NCR reset cause by dm9000_open() clear the
    NCR_MAC_LBK bit.

    Without this fix, Power-up FIFO pointers error happen around 2%
    rate among Davicom's customers' boards. With this fix, All above
    cases can be solved.

    Signed-off-by: Joseph CHANG
    Signed-off-by: David S. Miller

    Joseph CHANG
     
  • The 'link' field of 'struct sh_eth_private' has type 'enum phy_state' while the
    'link' field of 'struct phy_device' is merely *int* (having values 0 and 1) and
    the former field gets assigned from the latter. Make the field match, getting
    rid of incorrectly used PHY_DOWN value in assignments/comparisons.

    Signed-off-by: Sergei Shtylyov
    Signed-off-by: David S. Miller

    Sergei Shtylyov
     
  • At least on Renesas R8A7778, EESR.ECI interrupt seems to fire regardless of its
    mask in EESIPR register. I can 100% reproduce it with the following scenario:
    target is booted with 'ip=on' option, and so IP-Config opens SoC Ether device
    but doesn't get a proper reply and then succeeds with on-board SMC chip; then
    I login and try to bring up the SoC Ether device with 'ifconfig', and I get
    an ECI interrupt once request_irq() is called by sh_eth_open() (while interrupt
    mask in EESIPR register is all 0), if that interrupt is accompanied by a pending
    EESR.FRC (frame receive completion) interrupt, I get kernel oops in sh_eth_rx()
    because sh_eth_ring_init() hasn't been called yet!

    The solution I worked out is the following: in sh_eth_interrupt(), mask the
    interrupt status from EESR register with the interrupt mask from EESIPR register
    in order not to handle the disabled interrupts -- but forcing EESIPR.M_ECI bit
    in this mask set because we always need to fully handle EESR.ECI interrupt in
    sh_eth_error() in order to quench it (as it doesn't get cleared by just writing
    1 to the this bit as all the other interrupts).

    While at it, remove unneeded initializer for 'intr_status' variable and give it
    *unsigned long* type, matching the type of sh_eth_read()'s result; fix comment.

    Signed-off-by: Sergei Shtylyov
    Reviewed-by: Max Filippov
    Signed-off-by: David S. Miller

    Sergei Shtylyov
     
  • The code handling the absent LINK signal (or the absent PSR register -- which
    reflects the state of this signal) is quite naive and has probably never really
    worked. It's probably enough to say that this code is executed only on the LINK
    change interrupt (sic!) but even if we actually have the signal and choose to
    ignore it (it might be connected to PHY's link/activity LED output as on the
    Renesas BOCK-W board), sh_eth_adjust_link() on which this code relies to update
    'mdp->link' gets executed later than the LINK change interrupt where it is
    checked, and so RX/TX never get enabled via ECMR register.

    So, ignore the LINK changed interrupt iff LINK signal is absent (or just chosen
    not to be used) or PSR register is absent, and enable/disable RX/TX directly in
    sh_eth_adjust_link() in this case.

    Signed-off-by: Sergei Shtylyov
    Signed-off-by: David S. Miller

    Sergei Shtylyov
     
  • Linus Torvalds
     
  • Pull slave-dmaengine fixes from Vinod Koul:
    "Two fixes for slave-dmaengine.

    The first one is for making slave_id value correct for dw_dmac and
    the other one fixes the endieness in DT parsing"

    * 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
    dw_dmac: adjust slave_id accordingly to request line base
    dmaengine: dw_dma: fix endianess for DT xlate function

    Linus Torvalds
     
  • Pull media fixes from Mauro Carvalho Chehab:
    "For a some fixes for Kernel 3.9:
    - subsystem build fix when VIDEO_DEV=y, VIDEO_V4L2=m and I2C=m
    - compilation fix for arm multiarch preventing IR_RX51 to be selected
    - regression fix at bttv crop logic
    - s5p-mfc/m5mols/exynos: a few fixes for cameras on exynos hardware"

    * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
    [media] [REGRESSION] bt8xx: Fix too large height in cropcap
    [media] fix compilation with both V4L2 and I2C as 'm'
    [media] m5mols: Fix bug in stream on handler
    [media] s5p-fimc: Do not attempt to disable not enabled media pipeline
    [media] s5p-mfc: Fix encoder control 15 issue
    [media] s5p-mfc: Fix frame skip bug
    [media] s5p-fimc: send valid m2m ctx to fimc_m2m_job_finish
    [media] exynos-gsc: send valid m2m ctx to gsc_m2m_job_finish
    [media] fimc-lite: Fix the variable type to avoid possible crash
    [media] fimc-lite: Initialize 'step' field in fimc_lite_ctrl structure
    [media] ir: IR_RX51 only works on OMAP2

    Linus Torvalds
     
  • Pull block fixes from Jens Axboe:
    "Alright, this time from 10K up in the air.

    Collection of fixes that have been queued up since the merge window
    opened, hence postponed until later in the cycle. The pull request
    contains:

    - A bunch of fixes for the xen blk front/back driver.

    - A round of fixes for the new IBM RamSan driver, fixing various
    nasty issues.

    - Fixes for multiple drives from Wei Yongjun, bad handling of return
    values and wrong pointer math.

    - A fix for loop properly killing partitions when being detached."

    * tag 'for-linus-20130331' of git://git.kernel.dk/linux-block: (25 commits)
    mg_disk: fix error return code in mg_probe()
    rsxx: remove unused variable
    rsxx: enable error return of rsxx_eeh_save_issued_dmas()
    block: removes dynamic allocation on stack
    Block: blk-flush: Fixed indent code style
    cciss: fix invalid use of sizeof in cciss_find_cfgtables()
    loop: cleanup partitions when detaching loop device
    loop: fix error return code in loop_add()
    mtip32xx: fix error return code in mtip_pci_probe()
    xen-blkfront: remove frame list from blk_shadow
    xen-blkfront: pre-allocate pages for requests
    xen-blkback: don't store dev_bus_addr
    xen-blkfront: switch from llist to list
    xen-blkback: fix foreach_grant_safe to handle empty lists
    xen-blkfront: replace kmalloc and then memcpy with kmemdup
    xen-blkback: fix dispatch_rw_block_io() error path
    rsxx: fix missing unlock on error return in rsxx_eeh_remap_dmas()
    Adding in EEH support to the IBM FlashSystem 70/80 device driver
    block: IBM RamSan 70/80 error message bug fix.
    block: IBM RamSan 70/80 branding changes.
    ...

    Linus Torvalds
     
  • This reverts commit 6aa9707099c4b25700940eb3d016f16c4434360d.

    Commit 6aa9707099c4 ("lockdep: check that no locks held at freeze time")
    causes problems with NFS root filesystems. The failures were noticed on
    OMAP2 and 3 boards during kernel init:

    [ BUG: swapper/0/1 still has locks held! ]
    3.9.0-rc3-00344-ga937536 #1 Not tainted
    -------------------------------------
    1 lock held by swapper/0/1:
    #0: (&type->s_umount_key#13/1){+.+.+.}, at: [] sget+0x248/0x574

    stack backtrace:
    rpc_wait_bit_killable
    __wait_on_bit
    out_of_line_wait_on_bit
    __rpc_execute
    rpc_run_task
    rpc_call_sync
    nfs_proc_get_root
    nfs_get_root
    nfs_fs_mount_common
    nfs_try_mount
    nfs_fs_mount
    mount_fs
    vfs_kern_mount
    do_mount
    sys_mount
    do_mount_root
    mount_root
    prepare_namespace
    kernel_init_freeable
    kernel_init

    Although the rootfs mounts, the system is unstable. Here's a transcript
    from a PM test:

    http://www.pwsan.com/omap/testlogs/test_v3.9-rc3/20130317194234/pm/37xxevm/37xxevm_log.txt

    Here's what the test log should look like:

    http://www.pwsan.com/omap/testlogs/test_v3.8/20130218214403/pm/37xxevm/37xxevm_log.txt

    Mailing list discussion is here:

    http://lkml.org/lkml/2013/3/4/221

    Deal with this for v3.9 by reverting the problem commit, until folks can
    figure out the right long-term course of action.

    Signed-off-by: Paul Walmsley
    Cc: Mandeep Singh Baines
    Cc: Jeff Layton
    Cc: Shawn Guo
    Cc:
    Cc: Fengguang Wu
    Cc: Trond Myklebust
    Cc: Ingo Molnar
    Cc: Ben Chan
    Cc: Oleg Nesterov
    Cc: Tejun Heo
    Cc: Rafael J. Wysocki
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Walmsley
     

31 Mar, 2013

2 commits

  • Pull SCSI target fixes from Nicholas Bellinger:
    "This includes the bug-fix for a >= v3.8-rc1 regression specific to
    iscsi-target persistent reservation conflict handling (CC'ed to
    stable), and a tcm_vhost patch to drop VIRTIO_RING_F_EVENT_IDX usage
    so that in-flight qemu vhost-scsi-pci device code can detect the
    proper vhost feature bits.

    Also, there are two more tcm_vhost patches still being discussed by
    MST and Asias for v3.9 that will be required for the in-flight qemu
    vhost-scsi-pci device patch to function properly, and that should
    (hopefully) be the last target fixes for this round."

    * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
    target: Fix RESERVATION_CONFLICT status regression for iscsi-target special case
    tcm_vhost: Avoid VIRTIO_RING_F_EVENT_IDX feature bit

    Linus Torvalds
     
  • Since commit 0536bdf33faf (ARM: move iotable mappings within the vmalloc
    region), the Cavium CNS3xxx cannot boot anymore.

    This is caused by the pre-defined iotable mappings is not in the vmalloc
    region. This patch move the iotable mappings into the vmalloc region, and
    merge the MPCore private memory region (containing the SCU, the GIC and
    the TWD) as a single region.

    Signed-off-by: Mac Lin
    Signed-off-by: Anton Vorontsov
    Cc: stable@vger.kernel.org [v3.3+]

    Mac Lin
     

30 Mar, 2013

16 commits

  • When multiple ovq operations are being performed (lots of open/close
    operations on virtio_console fds), the __send_control_msg() function can
    get confused without locking.

    A simple recipe to cause badness is:
    * create a QEMU VM with two virtio-serial ports
    * in the guest, do
    while true;do echo abc >/dev/vport0p1;done
    while true;do echo edf >/dev/vport0p2;done

    In one run, this caused a panic in __send_control_msg(). In another, I
    got

    virtio_console virtio0: control-o:id 0 is not a head!

    This also results repeated messages similar to these on the host:

    qemu-kvm: virtio-serial-bus: Unexpected port id 478762112 for device virtio-serial-bus.0
    qemu-kvm: virtio-serial-bus: Unexpected port id 478762368 for device virtio-serial-bus.0

    Reported-by: FuXiangChun
    Signed-off-by: Amit Shah
    Reviewed-by: Wanlong Gao
    Reviewed-by: Asias He
    Signed-off-by: Rusty Russell
    Cc: stable@kernel.org

    Amit Shah
     
  • The cvq_lock was taken for the c_ivq. Rename the lock to make that
    obvious.

    We'll also add a lock around the c_ovq in the next commit, so there's no
    ambiguity.

    Signed-off-by: Amit Shah
    Reviewed-by: Asias He
    Reviewed-by: Wanlong Gao
    Signed-off-by: Rusty Russell
    Cc: stable@kernel.org

    Amit Shah
     
  • On some hardware configurations we have got the request line with the offset.
    The patch introduces convert_slave_id() helper for that cases. The request line
    base is came from the driver data provided by the platform_device_id table.

    Signed-off-by: Mika Westerberg
    Signed-off-by: Andy Shevchenko
    Cc: Viresh Kumar
    Acked-by: Viresh Kumar
    Signed-off-by: Vinod Koul

    Andy Shevchenko
     
  • As reported by Wu Fengguang's build robot tracking sparse warnings, the
    dma_spec arguments in the dw_dma_xlate are already byte swapped on
    little-endian platforms and must not get swapped again. This code is
    currently not used anywhere, but will be used in Linux 3.10 when the
    ARM SPEAr platform starts using the generic DMA DT binding.

    Signed-off-by: Arnd Bergmann
    Reported-by: Fengguang Wu
    Acked-by: Viresh Kumar
    Signed-off-by: Vinod Koul

    Arnd Bergmann
     
  • The Adam Belay's e-mail address in MAINTAINERS under PNP SUPPORT
    is not valid any more and I started to maintain that code in the
    meantime as a matter of fact, so list myself as a maintainer of it
    along with Bjorn and remove the Adam's entry from it.

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • According to the Datasheet (page 52):
    15-12 Reserved
    11-0 RXBC Receive Byte Count
    This field indicates the present received frame byte size.

    The code has a bug:
    rxh = ks8851_rdreg32(ks, KS_RXFHSR);
    rxstat = rxh & 0xffff;
    rxlen = rxh >> 16; // BUG!!! 0xFFF mask should be applied

    Signed-off-by: Max Nekludov
    Signed-off-by: David S. Miller

    Max.Nekludov@us.elster.com
     
  • commit 35d48903e97819 (bonding: fix rx_handler locking) added a race
    in bonding driver, reported by Steven Rostedt who did a very good
    diagnosis :

    I'm currently debugging a crash in an old 3.0-rt kernel that one of our
    customers is seeing. The bug happens with a stress test that loads and
    unloads the bonding module in a loop (I don't know all the details as
    I'm not the one that is directly interacting with the customer). But the
    bug looks to be something that may still be present and possibly present
    in mainline too. It will just be much harder to trigger it in mainline.

    In -rt, interrupts are threads, and can schedule in and out just like
    any other thread. Note, mainline now supports interrupt threads so this
    may be easily reproducible in mainline as well. I don't have the ability
    to tell the customer to try mainline or other kernels, so my hands are
    somewhat tied to what I can do.

    But according to a core dump, I tracked down that the eth irq thread
    crashed in bond_handle_frame() here:

    slave = bond_slave_get_rcu(skb->dev);
    bond = slave->bond; bond caused a NULL
    pointer dereference.

    Looking at the code that unregisters the handler:

    void netdev_rx_handler_unregister(struct net_device *dev)
    {

    ASSERT_RTNL();
    RCU_INIT_POINTER(dev->rx_handler, NULL);
    RCU_INIT_POINTER(dev->rx_handler_data, NULL);
    }

    Which is basically:
    dev->rx_handler = NULL;
    dev->rx_handler_data = NULL;

    And looking at __netif_receive_skb() we have:

    rx_handler = rcu_dereference(skb->dev->rx_handler);
    if (rx_handler) {
    if (pt_prev) {
    ret = deliver_skb(skb, pt_prev, orig_dev);
    pt_prev = NULL;
    }
    switch (rx_handler(&skb)) {

    My question to all of you is, what stops this interrupt from happening
    while the bonding module is unloading? What happens if the interrupt
    triggers and we have this:

    CPU0 CPU1
    ---- ----
    rx_handler = skb->dev->rx_handler

    netdev_rx_handler_unregister() {
    dev->rx_handler = NULL;
    dev->rx_handler_data = NULL;

    rx_handler()
    bond_handle_frame() {
    slave = skb->dev->rx_handler;
    bond = slave->bond;

    We can fix bug this in two ways. First is adding a test in
    bond_handle_frame() and others to check if rx_handler_data is NULL.

    A second way is adding a synchronize_net() in
    netdev_rx_handler_unregister() to make sure that a rcu protected reader
    has the guarantee to see a non NULL rx_handler_data.

    The second way is better as it avoids an extra test in fast path.

    Reported-by: Steven Rostedt
    Signed-off-by: Eric Dumazet
    Cc: Jiri Pirko
    Cc: Paul E. McKenney
    Acked-by: Steven Rostedt
    Reviewed-by: Paul E. McKenney
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • o Add myself to netxen_nic maintainers list

    Signed-off-by: Manish Chopra
    Signed-off-by: David S. Miller

    Manish Chopra
     
  • Usage of pci-msi results in corrupted dma packet transfers to the host.

    Reported-by: rebelyouth
    Cc: Huang, Xiong
    Tested-by: Christian Sünkenberg
    Signed-off-by: Hannes Frederic Sowa
    Signed-off-by: David S. Miller

    Hannes Frederic Sowa
     
  • Currently, we hold a max of sch->limit -1 number of packets instead of
    sch->limit packets. Fix this off-by-one error.

    Signed-off-by: Vijay Subramanian
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Vijay Subramanian
     
  • WOL is broken because the magic packet status bit is getting set rather
    than the enable bit. The PMT interrupt is not getting serviced because
    the PMT interrupt is also enabled on the global interrupt, but not
    cleared by the global interrupt and the global interrupt is higher
    priority. This fixes both of these issues to get WOL working.

    There's still a problem with receive after resume, but at least now we
    can wake-up.

    Signed-off-by: Rob Herring
    Signed-off-by: David S. Miller

    Rob Herring
     
  • If skb allocation for the rx ring fails repeatedly, we can reach a point
    were the ring is empty. In this condition, the driver is out of sync with
    the h/w. While this has always been possible, the removal of the skb
    recycling seems to have made triggering this problem easier.

    Signed-off-by: Rob Herring
    Signed-off-by: David S. Miller

    Rob Herring
     
  • 'nf_reset' is called just prior calling 'netif_rx'.
    No need to call it twice.

    Reported-by: Igor Michailov
    Signed-off-by: Shmulik Ladkani
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Shmulik Ladkani
     
  • This patch enables RX of jumbo frames for LAN7500.

    Previously the driver would transmit jumbo frames succesfully but
    would drop received jumbo frames (incrementing the interface errors
    count).

    With this patch applied the device can succesfully receive jumbo
    frames up to MTU 9000 (9014 bytes on the wire including ethernet
    header).

    Signed-off-by: Steve Glendinning
    Signed-off-by: David S. Miller

    Steve Glendinning
     
  • flush_tasklet is not percpu var, and percpu is percpu var, and
    this_cpu_ptr(&info->cache->percpu->flush_tasklet)
    is not equal to
    &this_cpu_ptr(info->cache->percpu)->flush_tasklet

    1f743b076(use this_cpu_ptr per-cpu helper) introduced this bug.

    Signed-off-by: Li RongQing
    Signed-off-by: David S. Miller

    Li RongQing
     
  • The current Tilera boot infrastructure now provides the initramfs
    to Linux as a Tilera-hypervisor file named "initramfs", rather than
    "initramfs.cpio.gz", as before. (This makes it reasonable to use
    other compression techniques than gzip on the file without having to
    worry about the name causing confusion.) Adapt to use the new name,
    but also fall back to checking for the old name.

    Cc'ing to stable so that older kernels will remain compatible with
    newer Tilera boot infrastructure.

    Signed-off-by: Chris Metcalf
    Cc: stable@vger.kernel.org

    Chris Metcalf