23 Feb, 2012

2 commits

  • USB bugfixes for 3.3-rc4

    A number of new device ids, and a cleanup/fix for some of the option
    device ids that shouldn't have been added in the first place.

    There's also a few USB 3 fixes for problems that people have reported,
    and a usb-storage bugfix to round it out.

    Signed-off-by: Greg Kroah-Hartman

    * tag 'usb-3.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    USB: Added Kamstrup VID/PIDs to cp210x serial driver.
    USB: Serial: ti_usb_3410_5052: Add Abbot Diabetes Care cable id
    usb-storage: fix freezing of the scanning thread
    xhci: Fix encoding for HS bulk/control NAK rate.
    USB: Set hub depth after USB3 hub reset
    USB: Fix handoff when BIOS disables host PCI device.
    USB: option: cleanup zte 3g-dongle's pid in option.c
    USB: Don't fail USB3 probe on missing legacy PCI IRQ.
    xhci: Fix oops caused by more USB2 ports than USB3 ports.
    USB: Remove duplicate USB 3.0 hub feature #defines.

    Linus Torvalds
     
  • Bugfixes for the NFS client.

    Fix a nasty Oops in the NFSv4 getacl code, another source of infinite
    loops in the NFSv4 state recovery code, and a regression in NFSv4.1
    session initialisation.

    Also deal with an NFSv4.1 memory leak.

    * tag 'nfs-for-3.3-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    NFSv4: fix server_scope memory leak
    NFSv4.1: Fix a NFSv4.1 session initialisation regression
    NFSv4: Ensure we throw out bad delegation stateids on NFS4ERR_BAD_STATEID
    NFSv4: Fix an Oops in the NFSv4 getacl code

    Linus Torvalds
     

22 Feb, 2012

2 commits

  • The 'poll()' system call timeout parameter is supposed to be 'int', not
    'long'.

    Now, the reason this matters is that right now 32-bit compat mode is
    broken on at least x86-64, because the 32-bit code just calls
    'sys_poll()' directly on x86-64, and the 32-bit argument will have been
    zero-extended, turning a signed 'int' into a large unsigned 'long'
    value.

    We could just introduce a 'compat_sys_poll()' function for this, and
    that may eventually be what we have to do, but since the actual standard
    poll() semantics is *supposed* to be 'int', and since at least on x86-64
    glibc sign-extends the argument before invocing the system call (so
    nobody can actually use a 64-bit timeout value in user space _anyway_,
    even in 64-bit binaries), the simpler solution would seem to be to just
    fix the definition of the system call to match what it should have been
    from the very start.

    If it turns out that somebody somehow circumvents the user-level libc
    64-bit sign extension and actually uses a large unsigned 64-bit timeout
    despite that not being how poll() is supposed to work, we will need to
    do the compat_sys_poll() approach.

    Reported-by: Thomas Meyer
    Acked-by: Eric Dumazet
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • This provides unified readq()/writeq() helper functions for 32-bit
    drivers.

    For some cases, readq/writeq without atomicity is harmful, and order of
    io access has to be specified explicitly. So in this patch, new two
    header files which contain non-atomic readq/writeq are added.

    - provides non-atomic readq/
    writeq with the order of lower address -> higher address

    - provides non-atomic readq/
    writeq with reversed order

    This allows us to remove some readq()s that were added drivers when the
    default non-atomic ones were removed in commit dbee8a0affd5 ("x86:
    remove 32-bit versions of readq()/writeq()")

    The drivers which need readq/writeq but can do with the non-atomic ones
    must add the line:

    #include /* or hi-lo.h */

    But this will be nop in 64-bit environments, and no other #ifdefs are
    required. So I believe that this patch can solve the problem of
    1. driver-specific readq/writeq
    2. atomicity and order of io access

    This patch is tested with building allyesconfig and allmodconfig as
    ARCH=x86 and ARCH=i386 on top of tip/master.

    Cc: Kashyap Desai
    Cc: Len Brown
    Cc: Ravi Anand
    Cc: Vikas Chaudhary
    Cc: Matthew Garrett
    Cc: Jason Uhlenkott
    Cc: James Bottomley
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Roland Dreier
    Cc: James Bottomley
    Cc: Alan Cox
    Cc: Matthew Wilcox
    Cc: Andrew Morton
    Signed-off-by: Hitoshi Mitake
    Signed-off-by: Linus Torvalds

    Hitoshi Mitake
     

21 Feb, 2012

1 commit

  • Assorted fixes, sat in -next for a week or so...

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    ocfs2: deal with wraparounds of i_nlink in ocfs2_rename()
    vfs: fix compat_sys_stat() handling of overflows in st_nlink
    quota: Fix deadlock with suspend and quotas
    vfs: Provide function to get superblock and wait for it to thaw
    vfs: fix panic in __d_lookup() with high dentry hashtable counts
    autofs4 - fix lockdep splat in autofs
    vfs: fix d_inode_lookup() dentry ref leak

    Linus Torvalds
     

20 Feb, 2012

1 commit

  • time_t was used in the signature and key packet headers,
    which is typedef of long and is different on 32 and 64 bit architectures.
    Signature and key format should be independent of architecture.
    Similar to GPG, I have changed the type to uint32_t.

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: James Morris

    Dmitry Kasatkin
     

19 Feb, 2012

1 commit


16 Feb, 2012

1 commit

  • Use standard ror64() instead of hand-written.
    There is no standard ror64, so create it.

    The difference is shift value being "unsigned int" instead of uint64_t
    (for which there is no reason). gcc starts to emit native ROR instructions
    which it doesn't do for some reason currently. This should make the code
    faster.

    Patch survives in-tree crypto test and ping flood with hmac(sha512) on.

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Herbert Xu

    Alexey Dobriyan
     

14 Feb, 2012

5 commits

  • In quota code we need to find a superblock corresponding to a device and wait
    for superblock to be unfrozen. However this waiting has to happen without
    s_umount semaphore because that is required for superblock to thaw. So provide
    a function in VFS for this to keep dances with s_umount where they belong.

    [AV: implementation switched to saner variant]

    Signed-off-by: Jan Kara
    Signed-off-by: Al Viro

    Jan Kara
     
  • Current PIO mode makes a kernel crash with CONFIG_HIGHMEM.
    Highmem pages have a NULL from sg_virt(sg).
    This patch fixes the following problem.

    Unable to handle kernel NULL pointer dereference at virtual address 00000000
    pgd = c0004000
    [00000000] *pgd=00000000
    Internal error: Oops: 817 [#1] PREEMPT SMP
    Modules linked in:
    CPU: 0 Not tainted (3.0.15-01423-gdbf465f #589)
    PC is at dw_mci_pull_data32+0x4c/0x9c
    LR is at dw_mci_read_data_pio+0x54/0x1f0
    pc : [] lr : [] psr: 20000193
    sp : c0619d48 ip : c0619d70 fp : c0619d6c
    r10: 00000000 r9 : 00000002 r8 : 00001000
    r7 : 00000200 r6 : 00000000 r5 : e1dd3100 r4 : 00000000
    r3 : 65622023 r2 : 0000007f r1 : eeb96000 r0 : e1dd3100
    Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment
    xkernel
    Control: 10c5387d Table: 61e2004a DAC: 00000015
    Process swapper (pid: 0, stack limit = 0xc06182f0)
    Stack: (0xc0619d48 to 0xc061a000)
    9d40: e1dd3100 e1a4f000 00000000 e1dd3100 e1a4f000 00000200
    9d60: c0619da4 c0619d70 c035988c c03587e4 c0619d9c e18158f4 e1dd3100 e1dd3100
    9d80: 00000020 00000000 00000000 00000020 c06e8a84 00000000 c0619e04 c0619da8
    9da0: c0359b24 c0359844 e18158f4 e1dd3164 e1dd3168 e1dd3150 3d02fc79 e1dd3154
    9dc0: e1dd3178 00000000 00000020 00000000 e1dd3150 00000000 c10dd7e8 e1a84900
    9de0: c061e7cc 00000000 00000000 0000008d c06e8a84 c061e780 c0619e4c c0619e08
    9e00: c00c4738 c0359a34 3d02fc79 00000000 c0619e4c c05a1698 c05a1670 c05a165c
    9e20: c04de8b0 c061e780 c061e7cc e1a84900 ffffed68 0000008d c0618000 00000000
    9e40: c0619e6c c0619e50 c00c48b4 c00c46c8 c061e780 c00423ac c061e7cc ffffed68
    9e60: c0619e8c c0619e70 c00c7358 c00c487c 0000008d ffffee38 c0618000 ffffed68
    9e80: c0619ea4 c0619e90 c00c4258 c00c72b0 c00423ac ffffee38 c0619ecc c0619ea8
    9ea0: c004241c c00c4234 ffffffff f8810000 0000006d 00000002 00000001 7fffffff
    9ec0: c0619f44 c0619ed0 c0048bc0 c00423c4 220ae7a9 00000000 386f0d30 0005d3a4
    9ee0: c00423ac c10dd0b8 c06f2cd8 c0618000 c0594778 c003a674 7fffffff c0619f44
    9f00: 386f0d30 c0619f18 c00a6f94 c005be3c 80000013 ffffffff 386f0d30 0005d3a4
    9f20: 386f0d30 0005d2d1 c10dd0a8 c10dd0b8 c06f2cd8 c0618000 c0619f74 c0619f48
    9f40: c0345858 c005be00 c00a2440 c0618000 c0618000 c00410d8 c06c1944 c00410fc
    9f60: c0594778 c003a674 c0619f9c c0619f78 c004a7e8 c03457b4 c0618000 c06c18f8
    9f80: 00000000 c0039c70 c06c18d4 c003a674 c0619fb4 c0619fa0 c04ceafc c004a714
    9fa0: c06287b4 c06c18f8 c0619ff4 c0619fb8 c0008b68 c04cea68 c0008578 00000000
    9fc0: 00000000 c003a674 00000000 10c5387d c0628658 c003aa78 c062f1c4 4000406a
    9fe0: 413fc090 00000000 00000000 c0619ff8 40008044 c0008858 00000000 00000000
    Backtrace:
    [] (dw_mci_pull_data32+0x0/0x9c) from [] (dw_mci_read_data_pio+0x54/0x1f0)
    r6:00000200 r5:e1a4f000 r4:e1dd3100
    [] (dw_mci_read_data_pio+0x0/0x1f0) from [] (dw_mci_interrupt+0xfc/0x4a4)
    [] (dw_mci_interrupt+0x0/0x4a4) from [] (handle_irq_event_percpu+0x7c/0x1b4)
    [] (handle_irq_event_percpu+0x0/0x1b4) from [] (handle_irq_event+0x44/0x64)
    [] (handle_irq_event+0x0/0x64) from [] (handle_fasteoi_irq+0xb4/0x124)
    r7:ffffed68 r6:c061e7cc r5:c00423ac r4:c061e780
    [] (handle_fasteoi_irq+0x0/0x124) from [] (generic_handle_irq+0x30/0x38)
    r7:ffffed68 r6:c0618000 r5:ffffee38 r4:0000008d
    [] (generic_handle_irq+0x0/0x38) from [] (asm_do_IRQ+0x64/0xe0)
    r5:ffffee38 r4:c00423ac
    [] (asm_do_IRQ+0x0/0xe0) from [] (__irq_svc+0x80/0x14c)
    Exception stack(0xc0619ed0 to 0xc0619f18)

    Signed-off-by: Seungwon Jeon
    Acked-by: Will Newton
    Cc: stable
    Signed-off-by: Chris Ball

    Seungwon Jeon
     
  • Modified the mmc_poweroff to resume before sending the poweroff
    notification command. In sleep mode only AWAKE and RESET commands are
    allowed, so before sending the poweroff notification command resume from
    sleep mode and then send the notification command.

    PowerOff Notify is tested on a Synopsis Designware Host Controller
    (eMMC 4.5). The suspend to RAM and resume works fine.

    Signed-off-by: Girish K S
    Tested-by: Girish K S
    Reviewed-by: Saugata Das
    Signed-off-by: Chris Ball

    Girish K S
     
  • There is an understood mismatch between the voltage the host controller is
    set to and the voltage supplied to the card by a fixed voltage regulator.
    Teaching the driver to accept the mismatch is overly complicated. Instead
    just accept the regulator's voltage.

    This patch adds MMC_CAP2_BROKEN_VOLTAGE.

    If the voltage didn't satisfy between min_uV and max_uV, try to change
    the voltage in core.c. When changing the voltage, maybe use
    regulator_set_voltage().

    In regulator_set_voltage(), check the below condition.

    /* sanity check */
    if (!rdev->desc->ops->set_voltage &&
    !rdev->desc->ops->set_voltage_sel) {
    ret = -EINVAL;
    goto out;
    }

    If some board should use the fixed-regulator, always return -EINVAL.
    Then, eMMC didn't initialize always.

    So if use a fixed-regulator, we need to add the MMC_CAP2_BROKEN_VOLTAGE.

    Signed-off-by: Jaehoon Chung
    Signed-off-by: Kyungmin Park
    Acked-by: Adrian Hunter
    Signed-off-by: Chris Ball

    Jaehoon Chung
     
  • Ensure clocks are always enabled before any interaction with the
    host controller driver. This makes sure that there is no race
    between host execution and the core layer turning off clocks
    in different context with clock gating framework.

    Signed-off-by: Sujit Reddy Thumma
    Acked-by: Linus Walleij
    Acked-by: Per Forlin
    Signed-off-by: Chris Ball

    Sujit Reddy Thumma
     

12 Feb, 2012

1 commit

  • Says Jens:

    "Time to push off some of the pending items. I really wanted to wait
    until we had the regression nailed, but alas it's not quite there yet.
    But I'm very confident that it's "just" a missing expire on exit, so
    fix from Tejun should be fairly trivial. I'm headed out for a week on
    the slopes.

    - Killing the barrier part of mtip32xx. It doesn't really support
    barriers, and it doesn't need them (writes are fully ordered).

    - A few fixes from Dan Carpenter, preventing overflows of integer
    multiplication.

    - A fixup for loop, fixing a previous commit that didn't quite solve
    the partial read problem from Dave Young.

    - A bio integer overflow fix from Kent Overstreet.

    - Improvement/fix of the door "keep locked" part of the cdrom shared
    code from Paolo Benzini.

    - A few cfq fixes from Shaohua Li.

    - A fix for bsg sysfs warning when removing a file it did not create
    from Stanislaw Gruszka.

    - Two fixes for floppy from Vivek, preventing a crash.

    - A few block core fixes from Tejun. One killing the over-optimized
    ioc exit path, cleaning that up nicely. Two others fixing an oops
    on elevator switch, due to calling into the scheduler merge check
    code without holding the queue lock."

    * 'for-linus' of git://git.kernel.dk/linux-block:
    block: fix lockdep warning on io_context release put_io_context()
    relay: prevent integer overflow in relay_open()
    loop: zero fill bio instead of return -EIO for partial read
    bio: don't overflow in bio_get_nr_vecs()
    floppy: Fix a crash during rmmod
    floppy: Cleanup disk->queue before caling put_disk() if add_disk() was never called
    cdrom: move shared static to cdrom_device_info
    bsg: fix sysfs link remove warning
    block: don't call elevator callbacks for plug merges
    block: separate out blk_rq_merge_ok() and blk_try_merge() from elevator functions
    mtip32xx: removed the irrelevant argument of mtip_hw_submit_io() and the unused member of struct driver_data
    block: strip out locking optimization in put_io_context()
    cdrom: use copy_to_user() without the underscores
    block: fix ioc locking warning
    block: fix NULL icq_cache reference
    block,cfq: change code order

    Linus Torvalds
     

11 Feb, 2012

4 commits

  • Somehow we ended up with duplicate hub feature #defines in ch11.h.
    Tatyana Brokhman first created the USB 3.0 hub feature macros in 2.6.38
    with commit 0eadcc09203349b11ca477ec367079b23d32ab91 "usb: USB3.0 ch11
    definitions". In 2.6.39, I modified a patch from John Youn that added
    similar macros in a different place in the same file, and committed
    dbe79bbe9dcb22cb3651c46f18943477141ca452 "USB 3.0 Hub Changes".

    Some of the #defines used different names for the same values. Others
    used exactly the same names with the same values, like these gems:

    #define USB_PORT_FEAT_BH_PORT_RESET 28
    ...
    #define USB_PORT_FEAT_BH_PORT_RESET 28

    According to my very geeky husband (who looked it up in the C99 spec),
    it is allowed to have object-like macros with duplicate names as long as
    the replacement list is exactly the same. However, he recalled that
    some compilers will give warnings when they find duplicate macros. It's
    probably best to remove the duplicates in the stable tree, so that the
    code compiles for everyone.

    The macros are now fixed to move the feature requests that are specific
    to USB 3.0 hubs into a new section (out of the USB 2.0 hub feature
    section), and use the most common macro name.

    This patch should be backported to 2.6.39.

    Signed-off-by: Sarah Sharp
    Cc: Tatyana Brokhman
    Cc: John Youn
    Cc: Jamey Sharp
    Cc: stable@vger.kernel.org

    Sarah Sharp
     
  • Quoth David:

    1) GRO MAC header comparisons were ethernet specific, breaking other
    link types. This required a multi-faceted fix to cure the originally
    noted case (Infiniband), because IPoIB was lying about it's actual
    hard header length. Thanks to Eric Dumazet, Roland Dreier, and
    others.

    2) Fix build failure when INET_UDP_DIAG is built in and ipv6 is modular.
    From Anisse Astier.

    3) Off by ones and other bug fixes in netprio_cgroup from Neil Horman.

    4) ipv4 TCP reset generation needs to respect any network interface
    binding from the socket, otherwise route lookups might give a
    different result than all the other segments received. From Shawn
    Lu.

    5) Fix unintended regression in ipv4 proxy ARP responses, from Thomas
    Graf.

    6) Fix SKB under-allocation bug in sh_eth, from Yoshihiro Shimoda.

    7) Revert skge PCI mapping changes that are causing crashes for some
    folks, from Stephen Hemminger.

    8) IPV4 route lookups fill in the wildcarded fields of the given flow
    lookup key passed in, which is fine most of the time as this is
    exactly what the caller's want. However there are a few cases that
    want to retain the original flow key values afterwards, so handle
    those cases properly. Fix from Julian Anastasov.

    9) IGB/IXGBE VF lookup bug fixes from Greg Rose.

    10) Properly null terminate filename passed to ethtool flash device
    method, from Ben Hutchings.

    11) S3 resume fix in via-velocity from David Lv.

    12) Fix double SKB free during xmit failure in CAIF, from Dmitry
    Tarnyagin.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (72 commits)
    net: Don't proxy arp respond if iif == rt->dst.dev if private VLAN is disabled
    ipv4: Fix wrong order of ip_rt_get_source() and update iph->daddr.
    netprio_cgroup: fix wrong memory access when NETPRIO_CGROUP=m
    netprio_cgroup: don't allocate prio table when a device is registered
    netprio_cgroup: fix an off-by-one bug
    bna: fix error handling of bnad_get_flash_partition_by_offset()
    isdn: type bug in isdn_net_header()
    net: Make qdisc_skb_cb upper size bound explicit.
    ixgbe: ethtool: stats user buffer overrun
    ixgbe: dcb: up2tc mapping lost on disable/enable CEE DCB state
    ixgbe: do not update real num queues when netdev is going away
    ixgbe: Fix broken dependency on MAX_SKB_FRAGS being related to page size
    ixgbe: Fix case of Tx Hang in PF with 32 VFs
    ixgbe: fix vf lookup
    igb: fix vf lookup
    e1000: add dropped DMA receive enable back in for WoL
    gro: more generic L2 header check
    IPoIB: Stop lying about hard_header_len and use skb->cb to stash LL addresses
    zd1211rw: firmware needs duration_id set to zero for non-pspoll frames
    net: enable TC35815 for MIPS again
    ...

    Linus Torvalds
     
  • When the netprio_cgroup module is not loaded, net_prio_subsys_id
    is -1, and so sock_update_prioidx() accesses cgroup_subsys array
    with negative index subsys[-1].

    Make the code resembles cls_cgroup code, which is bug free.

    Origionally-authored-by: Li Zefan
    Signed-off-by: Li Zefan
    Signed-off-by: Neil Horman
    CC: "David S. Miller"
    Signed-off-by: David S. Miller

    Neil Horman
     
  • fix 1 mysterious divide error
    fix 3 NULL dereference bugs in writeback tracing, on SD card removal w/o umount

    * tag 'writeback-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:
    writeback: fix dereferencing NULL bdi->dev on trace_writeback_queue
    lib: proportion: lower PROP_MAX_SHIFT to 32 on 64-bit kernel
    writeback: fix NULL bdi->dev in trace writeback_single_inode
    backing-dev: fix wakeup timer races with bdi_unregister()

    Linus Torvalds
     

10 Feb, 2012

2 commits

  • USB fixes for 3.3-rc3

    Here are a few minor USB fixes and a bunch of device id updates for the
    USB drivers.

    Signed-off-by: Greg Kroah-Hartman

    * tag 'usb-3.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    USB: usbserial: add new PID number (0xa951) to the ftdi driver
    usb: ch9.h: usb_endpoint_maxp() uses __le16_to_cpu()
    usb: musb: fix a build error on mips
    uwb & wusb & usb wireless controllers: fix kconfig error & build errors
    usb: Skip PCI USB quirk handling for Netlogic XLP
    powerpc/usb: fix issue of CPU halt when missing USB PHY clock
    usb: otg: mv_otg: Add dependence
    usb: host: Distinguish Kconfig text for Freescale controllers
    USB: add new zte 3g-dongle's pid to option.c
    usb: ch9.h: usb_endpoint_maxp() uses __le16_to_cpu()
    USB: qcserial: don't enable autosuspend
    USB: qcserial: add several new serial devices
    usb: otg: mv_otg: Add dependence
    usb: gadget: zero: fix bug in loopback autoresume handling

    Linus Torvalds
     
  • Just like skb->cb[], so that qdisc_skb_cb can be encapsulated inside
    of other data structures.

    This is intended to be used by IPoIB so that it can remember
    addressing information stored at hard_header_ops->create() time that
    it can fetch when the packet gets to the transmit routine.

    Signed-off-by: David S. Miller

    David S. Miller
     

09 Feb, 2012

2 commits

  • This series contains pending target bug-fixes and cleanups for v3.3-rc3
    that have been addressed the past weeks in lio-core.git.

    Some of the highlights include:

    - Fix handling for control CDBs with data greater than PAGE_SIZE (andy)
    - Use IP_FREEBIND for iscsi-target to address network portal creation
    issues with systemd (dax)
    - Allow PERSISTENT RESERVE IN for non-reservation holder (marco)
    - Fix iblock se_dev_attrib.unmap_granularity (marco)
    - Fix unsupported WRITE_SAME sense payload handling (martin)
    - Add workaround for zero-length control CDB handling (nab)
    - Fix discovery with INADDR_ANY and IN6ADDR_ANY_INIT (nab)
    - Fix target_submit_cmd() exception handling (nab)
    - Return correct ASC for unimplemented VPD pages (roland)
    - Don't zero pages used for data buffers (roland)
    - Fix return code of core_tpg_.*_lun (sebastian)

    * '3.3-rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (26 commits)
    target: Fix unsupported WRITE_SAME sense payload
    iscsi: use IP_FREEBIND socket option
    iblock: fix handling of large requests
    target: handle empty string writes in sysfs
    iscsi_target: in_aton needs linux/inet.h
    target: Fix iblock se_dev_attrib.unmap_granularity
    target: Fix target_submit_cmd() exception handling
    target: Change target_submit_cmd() to return void
    target: accept REQUEST_SENSE with 18bytes
    target: Fail INQUIRY commands with EVPD==0 but PAGE CODE!=0
    target: Return correct ASC for unimplemented VPD pages
    iscsi-target: Fix discovery with INADDR_ANY and IN6ADDR_ANY_INIT
    target: Allow control CDBs with data > 1 page
    iscsi-target: Fix up a few assignments
    iscsi-target: make one-bit bitfields unsigned
    iscsi-target: Fix double list_add with iscsit_alloc_buffs reject
    iscsi-target: Fix reject release handling in iscsit_free_cmd()
    target: fix return code of core_tpg_.*_lun
    target: use save/restore lock primitive in core_dec_lacl_count()
    target: avoid multiple outputs in scsi_dump_inquiry()
    ...

    Linus Torvalds
     
  • The keeplocked variable in the cdrom driver is shared across multiple
    drives, but set in per-device ioctls. Move it to the per-device struct,
    avoiding that the setting on one drive affects the driver's behavior
    when closing another.

    [ Impact: limit udev's confusion to one drive when a CD burning program
    unlocks the CD door at the end of burning. ]

    Signed-off-by: Paolo Bonzini
    Signed-off-by: Jens Axboe

    Paolo Bonzini
     

08 Feb, 2012

5 commits

  • Plug merge calls two elevator callbacks outside queue lock -
    elevator_allow_merge_fn() and elevator_bio_merged_fn(). Although
    attempt_plug_merge() suggests that elevator is guaranteed to be there
    through the existing request on the plug list, nothing prevents plug
    merge from calling into dying or initializing elevator.

    For regular merges, bypass ensures elvpriv count to reach zero, which
    in turn prevents merges as all !ELVPRIV requests get REQ_SOFTBARRIER
    from forced back insertion. Plug merge doesn't check ELVPRIV, and, as
    the requests haven't gone through elevator insertion yet, it doesn't
    have SOFTBARRIER set allowing merges on a bypassed queue.

    This, for example, leads to the following crash during elevator
    switch.

    BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
    IP: [] cfq_allow_merge+0x49/0xa0
    PGD 112cbc067 PUD 115d5c067 PMD 0
    Oops: 0000 [#1] PREEMPT SMP
    CPU 1
    Modules linked in: deadline_iosched

    Pid: 819, comm: dd Not tainted 3.3.0-rc2-work+ #76 Bochs Bochs
    RIP: 0010:[] [] cfq_allow_merge+0x49/0xa0
    RSP: 0018:ffff8801143a38f8 EFLAGS: 00010297
    RAX: 0000000000000000 RBX: ffff88011817ce28 RCX: ffff880116eb6cc0
    RDX: 0000000000000000 RSI: ffff880118056e20 RDI: ffff8801199512f8
    RBP: ffff8801143a3908 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000000 R12: ffff880118195708
    R13: ffff880118052aa0 R14: ffff8801143a3d50 R15: ffff880118195708
    FS: 00007f19f82cb700(0000) GS:ffff88011fc80000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    CR2: 0000000000000008 CR3: 0000000112c6a000 CR4: 00000000000006e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Process dd (pid: 819, threadinfo ffff8801143a2000, task ffff880116eb6cc0)
    Stack:
    ffff88011817ce28 ffff880118195708 ffff8801143a3928 ffffffff81391bba
    ffff88011817ce28 ffff880118195708 ffff8801143a3948 ffffffff81391bf1
    ffff88011817ce28 0000000000000000 ffff8801143a39a8 ffffffff81398e3e
    Call Trace:
    [] elv_rq_merge_ok+0x4a/0x60
    [] elv_try_merge+0x21/0x40
    [] blk_queue_bio+0x8e/0x390
    [] generic_make_request+0xca/0x100
    [] submit_bio+0x74/0x100
    [] __blockdev_direct_IO+0x1ce2/0x3450
    [] blkdev_direct_IO+0x57/0x60
    [] generic_file_aio_read+0x6d5/0x760
    [] do_sync_read+0xe2/0x120
    [] vfs_read+0xc5/0x180
    [] sys_read+0x51/0x90
    [] system_call_fastpath+0x16/0x1b

    There are multiple ways to fix this including making plug merge check
    ELVPRIV; however,

    * Calling into elevator outside queue lock is confusing and
    error-prone.

    * Requests on plug list aren't known to the elevator. They aren't on
    the elevator yet, so there's no elevator specific state to update.

    * Given the nature of plug merges - collecting bio's for the same
    purpose from the same issuer - elevator specific restrictions aren't
    applicable.

    So, simply don't call into elevator methods from plug merge by moving
    elv_bio_merged() from bio_attempt_*_merge() to blk_queue_bio(), and
    using blk_try_merge() in attempt_plug_merge().

    This is based on Jens' patch to skip elevator_allow_merge_fn() from
    plug merge.

    Note that this makes per-cgroup merged stats skip plug merging.

    Signed-off-by: Tejun Heo
    LKML-Reference:
    Original-patch-by: Jens Axboe
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • blk_rq_merge_ok() is the elevator-neutral part of merge eligibility
    test. blk_try_merge() determines merge direction and expects the
    caller to have tested elv_rq_merge_ok() previously.

    elv_rq_merge_ok() now wraps blk_rq_merge_ok() and then calls
    elv_iosched_allow_merge(). elv_try_merge() is removed and the two
    callers are updated to call elv_rq_merge_ok() explicitly followed by
    blk_try_merge(). While at it, make rq_merge_ok() functions return
    bool.

    This is to prepare for plug merge update and doesn't introduce any
    behavior change.

    This is based on Jens' patch to skip elevator_allow_merge_fn() from
    plug merge.

    Signed-off-by: Tejun Heo
    LKML-Reference:
    Original-patch-by: Jens Axboe
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • fbdev fixes for 3.3

    It includes:
    - compile fix for fsl-diu-fb
    - fix for a suspend/resume issue in atmel_lcdfb
    - fix for a suspend/resume issue in OMAP
    - workaround for a hardware bug to avoid physical damage in OMAP
    - really trivial dead code removal in intelfb

    * tag 'fbdev-fixes-for-3.3-1' of git://github.com/schandinat/linux-2.6:
    atmel_lcdfb: fix usage of CONTRAST_CTR in suspend/resume
    intelfb: remove some dead code
    drivers/video: compile fixes for fsl-diu-fb.c
    OMAPDSS: HDMI: PHY burnout fix
    OMAP: 4430SDP/Panda: add HDMI HPD gpio
    OMAP: 4430SDP/Panda: setup HDMI GPIO muxes
    OMAPDSS: remove wrong HDMI HPD muxing
    OMAP: 4430SDP/Panda: rename HPD GPIO to CT_CP_HPD
    OMAP: 4430SDP/Panda: use gpio_free_array to free HDMI gpios
    OMAPDSS: use sync versions of pm_runtime_put

    Linus Torvalds
     
  • arch: fix ioport mapping on mips,sh

    Kevin Cernekee reported that recent cleanup that replaced pci_iomap with
    a generic function failed to take into account the differences in io
    port handling on mips and sh architectures.

    Rather than revert the changes reintroducing the code duplication, this
    patchset fixes this by adding ability for architectures to override
    ioport mapping for pci devices.

    Signed-off-by: Michael S. Tsirkin

    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
    sh: use the the PCI channels's io_map_base
    mips: use the the PCI controller's io_map_base
    lib: add NO_GENERIC_PCI_IOPORT_MAP

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6:
    mfd: Avoid twl6040-codec PLL reconfiguration when not needed
    mfd: Store twl6040-codec mclk configuration

    Linus Torvalds
     

07 Feb, 2012

3 commits

  • put_io_context() performed a complex trylock dancing to avoid
    deferring ioc release to workqueue. It was also broken on UP because
    trylock was always assumed to succeed which resulted in unbalanced
    preemption count.

    While there are ways to fix the UP breakage, even the most
    pathological microbench (forced ioc allocation and tight fork/exit
    loop) fails to show any appreciable performance benefit of the
    optimization. Strip it out. If there turns out to be workloads which
    are affected by this change, simpler optimization from the discussion
    thread can be applied later.

    Signed-off-by: Tejun Heo
    LKML-Reference:
    Signed-off-by: Jens Axboe

    Tejun Heo
     
  • Retval not very useful, and may even be harmful. Once submitted, fabrics
    should expect a sense error if anything goes wrong. All fabrics checking
    of this retval are useless or broken:

    fc checks it just to emit more debug output.
    ib_srpt trickles retval up, then it is ignored.
    qla2xxx trickles it up, which then causes a bug because the abort goto
    in qla_target.c thinks cmd hasn't been sent to target.

    Just returning nothing is best.

    Signed-off-by: Andy Grover
    Signed-off-by: Nicholas Bellinger

    Andy Grover
     
  • Setting the task name is done within setup_new_exec() by accessing
    bprm->filename. However this happens after flush_old_exec().
    This may result in a use after free bug, flush_old_exec() may
    "complete" vfork_done, which will wake up the parent which in turn
    may free the passed in filename.
    To fix this add a new tcomm field in struct linux_binprm which
    contains the now early generated task name until it is used.

    Fixes this bug on s390:

    Unable to handle kernel pointer dereference at virtual kernel address 0000000039768000
    Process kworker/u:3 (pid: 245, task: 000000003a3dc840, ksp: 0000000039453818)
    Krnl PSW : 0704000180000000 0000000000282e94 (setup_new_exec+0xa0/0x374)
    Call Trace:
    ([] setup_new_exec+0x38/0x374)
    [] load_elf_binary+0x402/0x1bf4
    [] search_binary_handler+0x38e/0x5bc
    [] do_execve_common+0x410/0x514
    [] do_execve+0x46/0x58
    [] kernel_execve+0x28/0x70
    [] ____call_usermodehelper+0x102/0x140
    [] kernel_thread_starter+0x6/0xc
    [] kernel_thread_starter+0x0/0xc
    Last Breaking-Event-Address:
    [] setup_new_exec+0x2fc/0x374

    Kernel panic - not syncing: Fatal exception: panic_on_oops

    Reported-by: Sebastian Ott
    Signed-off-by: Heiko Carstens
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     

06 Feb, 2012

1 commit

  • When a SD card is hot removed without umount, del_gendisk() will call
    bdi_unregister() without destroying/freeing it. This leaves the bdi in
    the bdi->dev = NULL, bdi->wb.task = NULL, bdi->bdi_list removed state.

    When sync(2) gets the bdi before bdi_unregister() and calls
    bdi_queue_work() after the unregister, trace_writeback_queue will be
    dereferencing the NULL bdi->dev. Fix it with a simple test for NULL.

    LKML-reference: http://lkml.org/lkml/2012/1/18/346
    Cc: stable@kernel.org
    Reported-by: Rabin Vincent
    Tested-by: Namjae Jeon
    Signed-off-by: Wu Fengguang

    Wu Fengguang
     

05 Feb, 2012

5 commits

  • Eric Dumazet found that commit 813b3b5db83
    (ipv4: Use caller's on-stack flowi as-is in output
    route lookups.) that comes in 3.0 added a regression.
    The problem appears to be that resulting flowi4_oif is
    used incorrectly as input parameter to some routing lookups.
    The result is that when connecting to local port without
    listener if the IP address that is used is not on a loopback
    interface we incorrectly assign RTN_UNICAST to the output
    route because no route is matched by oif=lo. The RST packet
    can not be sent immediately by tcp_v4_send_reset because
    it expects RTN_LOCAL.

    So, change ip_route_connect and ip_route_newports to
    update the flowi4 fields that are input parameters because
    we do not want unnecessary binding to oif.

    To make it clear what are the input parameters that
    can be modified during lookup and to show which fields of
    floiw4 are reused add a new function to update the flowi4
    structure: flowi4_update_output.

    Thanks to Yurij M. Plotnikov for providing a bug report including a
    program to reproduce the problem.

    Thanks to Eric Dumazet for tracking the problem down to
    tcp_v4_send_reset and providing initial fix.

    Reported-by: Yurij M. Plotnikov
    Signed-off-by: Julian Anastasov
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Julian Anastasov
     
  • Power management fixes for 3.3-rc3

    Three power management regression fixes, one for a recent regression introcuded
    by the freezer changes during the 3.3 merge window and two for regressions
    in cpuidle (resulting from PM QoS changes) and in the hibernate user space
    interface, both introduced during the 3.2 development cycle.

    They include:

    * Two hibernate (s2disk) regression fixes from Srivatsa S. Bhat (for
    regressions introduced during the 3.3 merge window and during the 3.2
    development cycle).

    * A cpuidle fix from Venki Pallipadi for a regression resulting from PM QoS
    changes during the 3.2 development cycle causing cpuidle to work incorrectly
    for CONFIG_PM unset.

    * tag 'pm-fixes-for-3.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    PM / QoS: CPU C-state breakage with PM Qos change
    PM / Freezer: Thaw only kernel threads if freezing of kernel threads fails
    PM / Hibernate: Thaw kernel threads in SNAPSHOT_CREATE_IMAGE ioctl path

    Linus Torvalds
     
  • Looks like change "PM QoS: Move and rename the implementation files"
    merged during the 3.2 development cycle made PM QoS depend on
    CONFIG_PM which depends on (PM_SLEEP || PM_RUNTIME).

    That breaks CPU C-states with kernels not having these CONFIGs, causing CPUs
    to spend time in Polling loop idle instead of going into deep C-states,
    consuming way way more power. This is with either acpi idle or intel idle
    enabled.

    Either CONFIG_PM should be enabled with any pm_qos users or
    the !CONFIG_PM pm_qos_request() should return sane defaults not to break
    the existing users. Here's is the patch for the latter option.

    [rjw: Modified the changelog slightly.]

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Rafael J. Wysocki
    Cc: stable@vger.kernel.org

    Venkatesh Pallipadi
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: i8042 - add Lenovo Ideapad U455 to 'reset' blacklist
    Input: serio_raw - return proper result when serio_raw_read fails
    Input: document device properties
    Input: twl4030_keypad - fix comment (trivial)
    Input: gpio_keys - fix struct device declared inside parameter list
    Input: evdev - fix variable initialisation

    Linus Torvalds
     
  • * 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
    i.MX SDMA: Fix burstsize settings
    ARM: mach-shmobile: both USB DMAC instances on sh7372 are slave-only
    dma: sh_dma: not all SH DMAC implementations support MEMCPY
    at_hdmac: bugfix for enabling channel irq
    dmaengine: fix missing 'cnt' in ?: in dmatest

    Linus Torvalds
     

04 Feb, 2012

4 commits

  • - Fix a regression in 16-bit Atmel NAND flash which was introduced in 3.1
    - Fix breakage with MTD suspend caused by the API rework
    - Fix a problem with resetting the MX28 BCH module
    - A couple of other trivial fixes

    * tag 'for-linus-3.3-20120204' of git://git.infradead.org/~dwmw2/mtd-3.3:
    Revert "mtd: atmel_nand: optimize read/write buffer functions"
    mtd: fix MTD suspend
    jffs2: do not initialize variable unnecessarily
    mtd: gpmi-nand bugfix: reset the BCH module when it is not MX23
    mtd: nand: fix typo in comment

    Linus Torvalds
     
  • Commit bf118a342f10dafe44b14451a1392c3254629a1f (NFSv4: include bitmap
    in nfsv4 get acl data) introduces the 'acl_scratch' page for the case
    where we may need to decode multi-page data. However it fails to take
    into account the fact that the variable may be NULL (for the case where
    we're not doing multi-page decode), and it also attaches it to the
    encoding xdr_stream rather than the decoding one.

    The immediate result is an Oops in nfs4_xdr_enc_getacl due to the
    call to page_address() with a NULL page pointer.

    Signed-off-by: Trond Myklebust
    Cc: Andy Adamson
    Cc: stable@vger.kernel.org

    Trond Myklebust
     
  • sound fixes for 3.3-rc3

    Most of commits are either regression fixes for varioud HD-audio
    codecs or small ASoC fixes. Also a trivial build fix is included.

    * tag 'sound-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: hda - Disable dynamic-power control for VIA as default
    ALSA: hda - Allow analog low-current mode when dynamic power-control is on
    ALSA: hda - Fix the logic to detect VIA analog low-current mode
    ALSA: hda - Check power-state before changing in patch_via.c
    ALSA: HDA: Fix duplicated output to more than one codec
    ALSA: hda - Fix calling cs_automic twice for Cirrus codecs.
    ALSA: HDA: Remove quirk for Toshiba Qosmio G50
    ALSA: HDA: Fix jack creation for codecs with front and rear Line In
    ALSA: hda - Apply 0x0f-VREF fix to all ASUS laptops with ALC861/660
    ASoC: neo1973_wm8753: remove references to the neo1973-gta01 machine
    ALSA: Add #ifdef CONFIG_PCI guard for snd_pci_quirk_* functions
    ASoC: wm_hubs: fix wrong bits for LINEOUT2 N/P mixer
    ALSA: HDA: Remove quirk for Asus N53Jq
    ASoC: wm_hubs: Enable line out VMID buffer for single ended line outputs
    ASoC: wm5100: Mark register cache as dirty when regulators are disabled
    ASoC: wm8962: Mark register cache as dirty when regulators are disabled
    ASoC: wm8996: Mark register cache as dirty when regulators are disabled
    ASoC: wm5100: Fix microphone configuration
    ASoC: wm5100: Make sure we switch to button reporting mode

    Linus Torvalds
     
  • Store the last used mclk configuration for the PLL.

    Signed-off-by: Peter Ujfalusi
    Signed-off-by: Samuel Ortiz

    Peter Ujfalusi