24 Oct, 2011

5 commits

  • Linus Torvalds
     
  • * git://git.infradead.org/iommu-2.6:
    intel-iommu: fix superpage support in pfn_to_dma_pte()
    intel-iommu: set iommu_superpage on VM domains to lowest common denominator
    intel-iommu: fix return value of iommu_unmap() API
    MAINTAINERS: Update VT-d entry for drivers/pci -> drivers/iommu move
    intel-iommu: Export a flag indicating that the IOMMU is used for iGFX.
    intel-iommu: Workaround IOTLB hang on Ironlake GPU
    intel-iommu: Fix AB-BA lockdep report

    Linus Torvalds
     
  • * 'for-linus' of http://people.redhat.com/agk/git/linux-dm:
    dm kcopyd: fix job_pool leak

    Linus Torvalds
     
  • Commit 4b239f458 ("x86-64, mm: Put early page table high") causes a S4
    regression since 2.6.39, namely the machine reboots occasionally at S4
    resume. It doesn't happen always, overall rate is about 1/20. But,
    like other bugs, once when this happens, it continues to happen.

    This patch fixes the problem by essentially reverting the memory
    assignment in the older way.

    Signed-off-by: Takashi Iwai
    Cc:
    Cc: Rafael J. Wysocki
    Cc: Yinghai Lu
    [ We'll hopefully find the real fix, but that's too late for 3.1 now ]
    Signed-off-by: Linus Torvalds

    Takashi Iwai
     
  • Fix memory leak introduced by commit a6e50b409d3f9e0833e69c3c9cca822e8fa4adbb
    (dm snapshot: skip reading origin when overwriting complete chunk).

    When allocating a set of jobs from kc->job_pool, job->master_job must be
    set (to point to itself) so that the mempool item gets freed when the
    master_job completes.

    master_job was introduced by commit c6ea41fbbe08f270a8edef99dc369faf809d1bd6
    (dm kcopyd: preallocate sub jobs to avoid deadlock)

    Reported-by: Michael Leun
    Cc: Mikulas Patocka
    Signed-off-by: Alasdair G Kergon

    Alasdair G Kergon
     

23 Oct, 2011

2 commits


22 Oct, 2011

1 commit

  • v2:
    - register_syscore_ops(&s3c24xx_irq_syscore_ops) does not need to be
    conditionally compiled out, it is already optimized out on !CONFIG_PM
    - fix also s3c2412 and s3c2416 affected by the same build issue

    v1:
    s3c2440.c fails to build if !CONFIG_PM because in such case
    s3c2410_pm_syscore_ops is not defined. Same error should happen also
    in s3c2410.c and s3c2442.c

    Signed-off-by: Domenico Andreoli
    Signed-off-by: Kukjin Kim

    Domenico Andreoli
     

21 Oct, 2011

6 commits

  • * git://github.com/herbertx/crypto:
    crypto: ghash - Avoid null pointer dereference if no key is set

    Linus Torvalds
     
  • * 'fix/hda' of git://github.com/tiwai/sound:
    ALSA: HDA: conexant support for Lenovo T520/W520
    ALSA: hda - Add position_fix quirk for Dell Inspiron 1010

    Linus Torvalds
     
  • The ghash_update function passes a pointer to gf128mul_4k_lle which will
    be NULL if ghash_setkey is not called or if the most recent call to
    ghash_setkey failed to allocate memory. This causes an oops. Fix this
    up by returning an error code in the null case.

    This is trivially triggered from unprivileged userspace through the
    AF_ALG interface by simply writing to the socket without setting a key.

    The ghash_final function has a similar issue, but triggering it requires
    a memory allocation failure in ghash_setkey _after_ at least one
    successful call to ghash_update.

    BUG: unable to handle kernel NULL pointer dereference at 00000670
    IP: [] gf128mul_4k_lle+0x23/0x60 [gf128mul]
    *pde = 00000000
    Oops: 0000 [#1] PREEMPT SMP
    Modules linked in: ghash_generic gf128mul algif_hash af_alg nfs lockd nfs_acl sunrpc bridge ipv6 stp llc

    Pid: 1502, comm: hashatron Tainted: G W 3.1.0-rc9-00085-ge9308cf #32 Bochs Bochs
    EIP: 0060:[] EFLAGS: 00000202 CPU: 0
    EIP is at gf128mul_4k_lle+0x23/0x60 [gf128mul]
    EAX: d69db1f0 EBX: d6b8ddac ECX: 00000004 EDX: 00000000
    ESI: 00000670 EDI: d6b8ddac EBP: d6b8ddc8 ESP: d6b8dda4
    DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
    Process hashatron (pid: 1502, ti=d6b8c000 task=d6810000 task.ti=d6b8c000)
    Stack:
    00000000 d69db1f0 00000163 00000000 d6b8ddc8 c101a520 d69db1f0 d52aa000
    00000ff0 d6b8dde8 d88d310f d6b8a3f8 d52aa000 00001000 d88d502c d6b8ddfc
    00001000 d6b8ddf4 c11676ed d69db1e8 d6b8de24 c11679ad d52aa000 00000000
    Call Trace:
    [] ? kmap_atomic_prot+0x37/0xa6
    [] ghash_update+0x85/0xbe [ghash_generic]
    [] crypto_shash_update+0x18/0x1b
    [] shash_ahash_update+0x22/0x36
    [] shash_async_update+0xb/0xd
    [] hash_sendpage+0xba/0xf2 [algif_hash]
    [] kernel_sendpage+0x39/0x4e
    [] ? 0xd88cdfff
    [] sock_sendpage+0x37/0x3e
    [] ? kernel_sendpage+0x4e/0x4e
    [] pipe_to_sendpage+0x56/0x61
    [] splice_from_pipe_feed+0x58/0xcd
    [] ? splice_from_pipe_begin+0x10/0x10
    [] __splice_from_pipe+0x36/0x55
    [] ? splice_from_pipe_begin+0x10/0x10
    [] splice_from_pipe+0x51/0x64
    [] ? default_file_splice_write+0x2c/0x2c
    [] generic_splice_sendpage+0x13/0x15
    [] ? splice_from_pipe_begin+0x10/0x10
    [] do_splice_from+0x5d/0x67
    [] sys_splice+0x2bf/0x363
    [] ? sysenter_exit+0xf/0x16
    [] ? trace_hardirqs_on_caller+0x10e/0x13f
    [] sysenter_do_call+0x12/0x32
    Code: 83 c4 0c 5b 5e 5f c9 c3 55 b9 04 00 00 00 89 e5 57 8d 7d e4 56 53 8d 5d e4 83 ec 18 89 45 e0 89 55 dc 0f b6 70 0f c1 e6 04 01 d6 a5 be 0f 00 00 00 4e 89 d8 e8 48 ff ff ff 8b 45 e0 89 da 0f
    EIP: [] gf128mul_4k_lle+0x23/0x60 [gf128mul] SS:ESP 0068:d6b8dda4
    CR2: 0000000000000670
    ---[ end trace 4eaa2a86a8e2da24 ]---
    note: hashatron[1502] exited with preempt_count 1
    BUG: scheduling while atomic: hashatron/1502/0x10000002
    INFO: lockdep is turned off.
    [...]

    Signed-off-by: Nick Bowler
    Cc: stable@kernel.org [2.6.37+]
    Signed-off-by: Herbert Xu

    Nick Bowler
     
  • Offsets of the irq controller registers were calculated
    correctly only for first GPIO bank. This patch fixes
    calculation of the register offsets for all GPIO banks.

    Reported-by: Sylwester Nawrocki
    Signed-off-by: Marek Szyprowski
    Signed-off-by: Kyungmin Park
    Signed-off-by: Kukjin Kim

    Marek Szyprowski
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
    sparc: Add alignment flag to PCI expansion resources
    sparc: Avoid calling sigprocmask()
    sparc: Use set_current_blocked()
    sparc32,leon: SRMMU MMU Table probe fix

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    fib_rules: fix unresolved_rules counting
    r8169: fix wrong eee setting for rlt8111evl
    r8169: fix driver shutdown WoL regression.
    ehea: Change maintainer to me
    pptp: pptp_rcv_core() misses pskb_may_pull() call
    tproxy: copy transparent flag when creating a time wait
    pptp: fix skb leak in pptp_xmit()
    bonding: use local function pointer of bond->recv_probe in bond_handle_frame
    smsc911x: Add support for SMSC LAN89218
    tg3: negate USE_PHYLIB flag check
    netconsole: enable netconsole can make net_device refcnt incorrent
    bluetooth: Properly clone LSM attributes to newly created child connections
    l2tp: fix a potential skb leak in l2tp_xmit_skb()
    bridge: fix hang on removal of bridge via netlink
    x25: Prevent skb overreads when checking call user data
    x25: Handle undersized/fragmented skbs
    x25: Validate incoming call user data lengths
    udplite: fast-path computation of checksum coverage
    IPVS netns shutdown/startup dead-lock
    netfilter: nf_conntrack: fix event flooding in GRE protocol tracker

    Linus Torvalds
     

20 Oct, 2011

7 commits

  • Since 8-bit temperature values are now handled in 16-bit struct
    members, values have to be cast to s8 for negative temperatures to be
    properly handled. This is broken since kernel version 2.6.39
    (commit bce26c58df86599c9570cee83eac58bdaae760e4.)

    Signed-off-by: Jean Delvare
    Cc: Guenter Roeck
    Cc: stable@kernel.org # 2.6.39+
    Signed-off-by: Guenter Roeck

    Jean Delvare
     
  • I don't usually pay much attention to the stale "? " addresses in
    stack backtraces, but this lucky report from Pawel Sikora hints that
    mremap's move_ptes() has inadequate locking against page migration.

    3.0 BUG_ON(!PageLocked(p)) in migration_entry_to_page():
    kernel BUG at include/linux/swapops.h:105!
    RIP: 0010:[] []
    migration_entry_wait+0x156/0x160
    [] handle_pte_fault+0xae1/0xaf0
    [] ? __pte_alloc+0x42/0x120
    [] ? do_huge_pmd_anonymous_page+0xab/0x310
    [] handle_mm_fault+0x181/0x310
    [] ? vma_adjust+0x537/0x570
    [] do_page_fault+0x11d/0x4e0
    [] ? do_mremap+0x2d5/0x570
    [] page_fault+0x1f/0x30

    mremap's down_write of mmap_sem, together with i_mmap_mutex or lock,
    and pagetable locks, were good enough before page migration (with its
    requirement that every migration entry be found) came in, and enough
    while migration always held mmap_sem; but not enough nowadays, when
    there's memory hotremove and compaction.

    The danger is that move_ptes() lets a migration entry dodge around
    behind remove_migration_pte()'s back, so it's in the old location when
    looking at the new, then in the new location when looking at the old.

    Either mremap's move_ptes() must additionally take anon_vma lock(), or
    migration's remove_migration_pte() must stop peeking for is_swap_entry()
    before it takes pagetable lock.

    Consensus chooses the latter: we prefer to add overhead to migration
    than to mremapping, which gets used by JVMs and by exec stack setup.

    Reported-and-tested-by: Paweł Sikora
    Signed-off-by: Hugh Dickins
    Acked-by: Andrea Arcangeli
    Acked-by: Mel Gorman
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • Currently no type of alignment is specified for PCI expansion roms while
    parsing the openfirmware tree. This causes calls to pci_map_rom() to fail.
    IORESOURCE_SIZEALIGN is the default alignment used for rom resouces in
    pci/probe.c, and has been verified to work with various cards on a ultra 10.

    Signed-off-By: Kjetil Oftedal
    Signed-off-by: David S. Miller

    Kjetil Oftedal
     
  • we should decrease ops->unresolved_rules when deleting a unresolved rule.

    Signed-off-by: Zheng Yan
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Yan, Zheng
     
  • Correct the wrong parameter for setting EEE for RTL8111E-VL.

    Signed-off-by: Hayes Wang
    Signed-off-by: David S. Miller

    hayeswang
     
  • Due to commit 92fc43b4159b518f5baae57301f26d770b0834c9 ("r8169: modify the
    flow of the hw reset."), rtl8169_hw_reset stomps during driver shutdown on
    RxConfig bits which are needed for WOL on some versions of the hardware.

    As these bits were formerly set from the r81{0x, 68}_pll_power_down methods,
    factor them out for use in the driver shutdown (rtl_shutdown) handler.

    I favored __rtl8169_get_wol() -hardware state indication- over
    RTL_FEATURE_WOL as the latter has become a good candidate for removal.

    Signed-off-by: Francois Romieu
    Cc: Hayes
    Tested-by: Marc Ballarin
    Signed-off-by: David S. Miller

    françois romieu
     
  • Breno Leitao has passed the maintainership to me.

    Signed-off-by: Thadeu Lima de Souza Cascardo
    Cc: Breno Leitao
    Acked-by: Breno Leitão
    Signed-off-by: David S. Miller

    Thadeu Lima de Souza Cascardo
     

19 Oct, 2011

18 commits

  • * 'v4l_for_linus' of git://linuxtv.org/mchehab/for_linus:
    [media] videodev: fix a NULL pointer dereference in v4l2_device_release()

    Linus Torvalds
     
  • * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    drm/radeon/kms/atom: fix handling of FB scratch indices
    drm/radeon/kms/DCE4.1: fix Select_CrtcSource EncodeMode setting for DP bridges (v2)
    drm/radeon/kms/DCE4.1: ss is not supported on the internal pplls
    drm/radeon/kms/DCE4.1: fix dig encoder to transmitter mapping
    ttm: Fix error-path using an uninitialized value

    Linus Torvalds
     
  • The change in 8280b66 does not cover the case when v4l2_dev is already
    NULL, fix that.

    With a Kinect sensor, seen as an USB camera using GSPCA in this context,
    a NULL pointer dereference BUG can be triggered by just unplugging the
    device after the camera driver has been loaded.

    Signed-off-by: Antonio Ospite
    Signed-off-by: Mauro Carvalho Chehab

    Antonio Ospite
     
  • If target_level == 0, current code breaks out of the while-loop if
    SUPERPAGE bit is set. We should also break out if PTE is not present.
    If we don't do this, KVM calls to iommu_iova_to_phys() will cause
    pfn_to_dma_pte() to create mapping for 4KiB pages.

    Signed-off-by: Allen Kay
    Signed-off-by: David Woodhouse

    Allen Kay
     
  • set dmar->iommu_superpage field to the smallest common denominator
    of super page sizes supported by all active VT-d engines. Initialize
    this field in intel_iommu_domain_init() API so intel_iommu_map() API
    will be able to use iommu_superpage field to determine the appropriate
    super page size to use.

    Signed-off-by: Allen Kay
    Signed-off-by: David Woodhouse

    Allen Kay
     
  • iommu_unmap() API expects IOMMU drivers to return the actual page order
    of the address being unmapped. Previous code was just returning page
    order passed in from the caller. This patch fixes this problem.

    Signed-off-by: Allen Kay
    Signed-off-by: David Woodhouse

    Allen Kay
     
  • Commit 166e9278a3f9 ("x86/ia64: intel-iommu: move to drivers/iommu/")
    moved the VT-d driver to drivers/iommu, but left the "F:" line in
    MAINTAINERS pointing to drivers/pci, which breaks scripts/get_maintainer.pl.

    Signed-off-by: Roland Dreier
    Signed-off-by: David Woodhouse

    Roland Dreier
     
  • FB scratch indices are dword indices, but we were treating
    them as byte indices. As such, we were getting the wrong
    FB scratch data for non-0 indices. Fix the indices and
    guard the indexing against indices larger than the scratch
    allocation.

    Fixes memory corruption on some boards if data was written
    past the end of the FB scratch array.

    Signed-off-by: Alex Deucher
    Reported-by: Dave Airlie
    Tested-by: Dave Airlie
    Cc: stable@kernel.org
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • e1000e uses paged frags, so any layer incorrectly pulling bytes from skb
    can trigger a BUG in skb_pull()

    [951.142737] [] skb_pull+0x15/0x17
    [951.142737] [] pptp_rcv_core+0x126/0x19a [pptp]
    [951.152725] [] sk_receive_skb+0x69/0x105
    [951.163558] [] pptp_rcv+0xc8/0xdc [pptp]
    [951.165092] [] gre_rcv+0x62/0x75 [gre]
    [951.165092] [] ip_local_deliver_finish+0x150/0x1c1
    [951.177599] [] ? ip_local_deliver_finish+0x0/0x1c1
    [951.177599] [] NF_HOOK.clone.7+0x51/0x58
    [951.177599] [] ip_local_deliver+0x51/0x55
    [951.177599] [] ip_rcv_finish+0x31a/0x33e
    [951.177599] [] ? ip_rcv_finish+0x0/0x33e
    [951.204898] [] NF_HOOK.clone.7+0x51/0x58
    [951.214651] [] ip_rcv+0x21b/0x246

    pptp_rcv_core() is a nice example of a function assuming everything it
    needs is available in skb head.

    Reported-by: Bradley Peterson
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • The transparent socket option setting was not copied to the time wait
    socket when an inet socket was being replaced by a time wait socket. This
    broke the --transparent option of the socket match and may have caused
    that FIN packets belonging to sockets in FIN_WAIT2 or TIME_WAIT state
    were being dropped by the packet filter.

    Signed-off-by: KOVACS Krisztian
    Signed-off-by: David S. Miller

    KOVACS Krisztian
     
  • In case we cant transmit skb, we must free it

    Signed-off-by: Eric Dumazet
    CC: Dmitry Kozlov
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • The bond->recv_probe is called in bond_handle_frame() when
    a packet is received, but bond_close() sets it to NULL. So,
    a panic occurs when both functions work in parallel.

    Why this happen:
    After null pointer check of bond->recv_probe, an sk_buff is
    duplicated and bond->recv_probe is called in bond_handle_frame.
    So, a panic occurs when bond_close() is called between the
    check and call of bond->recv_probe.

    Patch:
    This patch uses a local function pointer of bond->recv_probe
    in bond_handle_frame(). So, it can avoid the null pointer
    dereference.

    Signed-off-by: Mitsuo Hayasaka
    Cc: Jay Vosburgh
    Cc: Andy Gospodarek
    Cc: Eric Dumazet
    Cc: WANG Cong
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Mitsuo Hayasaka
     
  • LAN89218 is register compatible with LAN911x.

    Signed-off-by: Phil Edworthy
    Signed-off-by: David S. Miller

    Phil Edworthy
     
  • USE_PHYLIB flag in tg3_remove_one() is being checked incorrectly. This
    results tg3_phy_fini->phy_disconnect is never called and when tg3 module
    is removed.

    In my case this resulted in panics in phy_state_machine calling function
    phydev->adjust_link.

    So correct this check.

    Signed-off-by: Jiri Pirko
    Acked-by: Matt Carlson
    Signed-off-by: David S. Miller

    Jiri Pirko
     
  • There is no check if netconsole is enabled current.
    so when exec echo 1 > enabled;
    the reference of net_device will increment always.

    Signed-off-by: Gao feng
    Acked-by: Flavio Leitner
    Signed-off-by: David S. Miller

    Gao feng
     
  • The Bluetooth stack has internal connection handlers for all of the various
    Bluetooth protocols, and unfortunately, they are currently lacking the LSM
    hooks found in the core network stack's connection handlers. I say
    unfortunately, because this can cause problems for users who have have an
    LSM enabled and are using certain Bluetooth devices. See one problem
    report below:

    * http://bugzilla.redhat.com/show_bug.cgi?id=741703

    In order to keep things simple at this point in time, this patch fixes the
    problem by cloning the parent socket's LSM attributes to the newly created
    child socket. If we decide we need a more elaborate LSM marking mechanism
    for Bluetooth (I somewhat doubt this) we can always revisit this decision
    in the future.

    Reported-by: James M. Cape
    Signed-off-by: Paul Moore
    Acked-by: James Morris
    Signed-off-by: David S. Miller

    Paul Moore
     
  • l2tp_xmit_skb() can leak one skb if skb_cow_head() returns an error.

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

    Eric Dumazet
     
  • Need to cleanup bridge device timers and ports when being bridge
    device is being removed via netlink.

    This fixes the problem of observed when doing:
    ip link add br0 type bridge
    ip link set dev eth1 master br0
    ip link set br0 up
    ip link del br0

    which would cause br0 to hang in unregister_netdev because
    of leftover reference count.

    Reported-by: Sridhar Samudrala
    Signed-off-by: Stephen Hemminger
    Acked-by: Sridhar Samudrala
    Signed-off-by: David S. Miller

    stephen hemminger
     

18 Oct, 2011

1 commit

  • There's a lock inversion between the cputimer->lock and rq->lock;
    notably the two callchains involved are:

    update_rlimit_cpu()
    sighand->siglock
    set_process_cpu_timer()
    cpu_timer_sample_group()
    thread_group_cputimer()
    cputimer->lock
    thread_group_cputime()
    task_sched_runtime()
    ->pi_lock
    rq->lock

    scheduler_tick()
    rq->lock
    task_tick_fair()
    update_curr()
    account_group_exec()
    cputimer->lock

    Where the first one is enabling a CLOCK_PROCESS_CPUTIME_ID timer, and
    the second one is keeping up-to-date.

    This problem was introduced by e8abccb7193 ("posix-cpu-timers: Cure
    SMP accounting oddities").

    Cure the problem by removing the cputimer->lock and rq->lock nesting,
    this leaves concurrent enablers doing duplicate work, but the time
    wasted should be on the same order otherwise wasted spinning on the
    lock and the greater-than assignment filter should ensure we preserve
    monotonicity.

    Reported-by: Dave Jones
    Reported-by: Simon Kirby
    Signed-off-by: Peter Zijlstra
    Cc: stable@kernel.org
    Cc: Linus Torvalds
    Cc: Martin Schwidefsky
    Link: http://lkml.kernel.org/r/1318928713.21167.4.camel@twins
    Signed-off-by: Thomas Gleixner

    Peter Zijlstra