15 Oct, 2010

4 commits

  • Linus Torvalds
     
  • Tony Luck reports that the addition of the access_ok() check in commit
    0eead9ab41da ("Don't dump task struct in a.out core-dumps") broke the
    ia64 compile due to missing the necessary header file includes.

    Rather than add yet another include () to make everything
    happy, just uninline the silly core dump helper functions and move the
    bodies to fs/exec.c where they make a lot more sense.

    dump_seek() in particular was too big to be an inline function anyway,
    and none of them are in any way performance-critical. And we really
    don't need to mess up our include file headers more than they already
    are.

    Reported-and-tested-by: Tony Luck
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
    ehea: Fix a checksum issue on the receive path
    net: allow FEC driver to use fixed PHY support
    tg3: restore rx_dropped accounting
    b44: fix carrier detection on bind
    net: clear heap allocations for privileged ethtool actions
    NET: wimax, fix use after free
    ATM: iphase, remove sleep-inside-atomic
    ATM: mpc, fix use after free
    ATM: solos-pci, remove use after free
    net/fec: carrier off initially to avoid root mount failure
    r8169: use device model DMA API
    r8169: allocate with GFP_KERNEL flag when able to sleep

    Linus Torvalds
     
  • akiphie points out that a.out core-dumps have that odd task struct
    dumping that was never used and was never really a good idea (it goes
    back into the mists of history, probably the original core-dumping
    code). Just remove it.

    Also do the access_ok() check on dump_write(). It probably doesn't
    matter (since normal filesystems all seem to do it anyway), but he
    points out that it's normally done by the VFS layer, so ...

    [ I suspect that we should possibly do "vfs_write()" instead of
    calling ->write directly. That also does the whole fsnotify and write
    statistics thing, which may or may not be a good idea. ]

    And just to be anal, do this all for the x86-64 32-bit a.out emulation
    code too, even though it's not enabled (and won't currently even
    compile)

    Reported-by: akiphie
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

14 Oct, 2010

11 commits

  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:
    ioat2: fix performance regression

    Linus Torvalds
     
  • * 'for-2.6.36' of git://linux-nfs.org/~bfields/linux:
    nfsd: fix BUG at fs/nfsd/nfsfh.h:199 on unlink

    Linus Torvalds
     
  • …/git/tip/linux-2.6-tip

    * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    ring-buffer: Fix typo of time extends per page
    perf, MIPS: Support cross compiling of tools/perf for MIPS
    perf: Fix incorrect copy_from_user() usage

    Linus Torvalds
     
  • * master.kernel.org:/home/rmk/linux-2.6-arm:
    ARM: relax ioremap prohibition (309caa9) for -final and -stable
    ARM: 6440/1: ep93xx: DMA: fix channel_disable
    cpuimx27: fix i2c bus selection
    cpuimx27: fix compile when ULPI is selected
    ARM: 6435/1: Fix HWCAP_TLS flag for ARM11MPCore/Cortex-A9
    ARM: 6436/1: AT91: Fix power-saving in idle-mode on 926T processors
    ARM: fix section mismatch warnings in Versatile Express
    ARM: 6412/1: kprobes-decode: add support for MOVW instruction
    ARM: 6419/1: mmu: Fix MT_MEMORY and MT_MEMORY_NONCACHED pte flags
    ARM: 6416/1: errata: faulty hazard checking in the Store Buffer may lead to data corruption

    Linus Torvalds
     
  • …/git/tmlind/linux-omap-2.6

    * 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6:
    omap: iommu-load cam register before flushing the entry

    Linus Torvalds
     
  • * 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
    drm/radeon/kms: Silent spurious error message
    drm/radeon/kms: fix bad cast/shift in evergreen.c
    drm/radeon/kms: make TV/DFP table info less verbose
    drm/radeon/kms: leave certain CP int bits enabled
    drm/radeon/kms: avoid corner case issue with unmappable vram V2

    Linus Torvalds
     
  • …git/tip/linux-2.6-tip

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, numa: For each node, register the memory blocks actually used
    x86, AMD, MCE thresholding: Fix the MCi_MISCj iteration order
    x86, mce, therm_throt.c: Fix missing curly braces in error handling logic

    Linus Torvalds
     
  • Commit 0793448 "DMAENGINE: generic channel status v2" changed the interface for
    how dma channel progress is retrieved. It inadvertently exported an internal
    helper function ioat_tx_status() instead of ioat_dma_tx_status(). The latter
    polls the hardware to get the latest completion state, while the helper just
    evaluates the current state without touching hardware. The effect is that we
    end up waiting for completion timeouts or descriptor allocation errors before
    the completion state is updated.

    iperf (before fix):
    [SUM] 0.0-41.3 sec 364 MBytes 73.9 Mbits/sec

    iperf (after fix):
    [SUM] 0.0- 4.5 sec 499 MBytes 940 Mbits/sec

    This is a regression starting with 2.6.35.

    Cc:
    Cc: Dave Jiang
    Cc: Jesse Brandeburg
    Cc: Linus Walleij
    Cc: Maciej Sosnowski
    Reported-by: Richard Scobie
    Signed-off-by: Dan Williams

    Dan Williams
     
  • Currently we set all skbs with CHECKSUM_UNNECESSARY, even
    those whose protocol we don't know. This patch just
    add the CHECKSUM_COMPLETE tag for non TCP/UDP packets.

    Reported-by: Eric Dumazet
    Signed-off-by: Breno Leitao
    Signed-off-by: Jay Vosburgh
    Signed-off-by: David S. Miller

    Breno Leitao
     
  • As of commit 43a9aa64a2f4330a9cb59aaf5c5636566bce067c "NFSD:
    Fill in WCC data for REMOVE, RMDIR, MKNOD, and MKDIR", we sometimes call
    fh_unlock on a filehandle that isn't fully initialized.

    We should fix up the callers, but as a quick fix it is also sufficient
    just to remove this assertion.

    Reported-by: Marius Tolzmann
    Cc: Chuck Lever
    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     
  • At least one board using the FEC driver does not have a conventional
    PHY attached to it, it is directly connected to a somewhat simple
    ethernet switch (the board is the SnapGear/LITE, and the attached
    4-port ethernet switch is a RealTek RTL8305). This switch does not
    present the usual register interface of a PHY, it presents nothing.
    So a PHY scan will find nothing - it finds ID's of 0 for each PHY
    on the attached MII bus.

    After the FEC driver was changed to use phylib for supporting PHYs
    it no longer works on this particular board/switch setup.

    Add code support to use a fixed phy if no PHY is found on the MII bus.
    This is based on the way the cpmac.c driver solved this same problem.

    Signed-off-by: Greg Ungerer
    Signed-off-by: David S. Miller

    Greg Ungerer
     

13 Oct, 2010

5 commits

  • ... but produce a big warning about the problem as encouragement
    for people to fix their drivers.

    Signed-off-by: Russell King

    Russell King
     
  • Russell King
     
  • When channel_disable() is called, it disables per channel interrupts and
    waits until channels state becomes STATE_STALL, and then disables the
    channel. Now, if the DMA transfer is disabled while the channel is in
    STATE_NEXT we will not wait anything and disable the channel immediately.
    This seems to cause weird data corruption for example in audio transfers.

    Fix is to wait while we are in STATE_NEXT or STATE_ON and only then
    disable the channel.

    Signed-off-by: Mika Westerberg
    Acked-by: Ryan Mallon
    Signed-off-by: Russell King

    Mika Westerberg
     
  • * 'kvm-updates/2.6.36' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: x86: Move TSC reset out of vmcb_init
    KVM: x86: Fix SVM VMCB reset

    Linus Torvalds
     
  • Time stamps for the ring buffer are created by the difference between
    two events. Each page of the ring buffer holds a full 64 bit timestamp.
    Each event has a 27 bit delta stamp from the last event. The unit of time
    is nanoseconds, so 27 bits can hold ~134 milliseconds. If two events
    happen more than 134 milliseconds apart, a time extend is inserted
    to add more bits for the delta. The time extend has 59 bits, which
    is good for ~18 years.

    Currently the time extend is committed separately from the event.
    If an event is discarded before it is committed, due to filtering,
    the time extend still exists. If all events are being filtered, then
    after ~134 milliseconds a new time extend will be added to the buffer.

    This can only happen till the end of the page. Since each page holds
    a full timestamp, there is no reason to add a time extend to the
    beginning of a page. Time extends can only fill a page that has actual
    data at the beginning, so there is no fear that time extends will fill
    more than a page without any data.

    When reading an event, a loop is made to skip over time extends
    since they are only used to maintain the time stamp and are never
    given to the caller. As a paranoid check to prevent the loop running
    forever, with the knowledge that time extends may only fill a page,
    a check is made that tests the iteration of the loop, and if the
    iteration is more than the number of time extends that can fit in a page
    a warning is printed and the ring buffer is disabled (all of ftrace
    is also disabled with it).

    There is another event type that is called a TIMESTAMP which can
    hold 64 bits of data in the theoretical case that two events happen
    18 years apart. This code has not been implemented, but the name
    of this event exists, as well as the structure for it. The
    size of a TIMESTAMP is 16 bytes, where as a time extend is only
    8 bytes. The macro used to calculate how many time extends can fit on
    a page used the TIMESTAMP size instead of the time extend size
    cutting the amount in half.

    The following test case can easily trigger the warning since we only
    need to have half the page filled with time extends to trigger the
    warning:

    # cd /sys/kernel/debug/tracing/
    # echo function > current_tracer
    # echo 'common_pid < 0' > events/ftrace/function/filter
    # echo > trace
    # echo 1 > trace_marker
    # sleep 120
    # cat trace

    Enabling the function tracer and then setting the filter to only trace
    functions where the process id is negative (no events), then clearing
    the trace buffer to ensure that we have nothing in the buffer,
    then write to trace_marker to add an event to the beginning of a page,
    sleep for 2 minutes (only 35 seconds is probably needed, but this
    guarantees the bug), and then finally reading the trace which will
    trigger the bug.

    This patch fixes the typo and prevents the false positive of that warning.

    Reported-by: Hans J. Koch
    Tested-by: Hans J. Koch
    Cc: Thomas Gleixner
    Cc: Stable Kernel
    Signed-off-by: Steven Rostedt

    Steven Rostedt
     

12 Oct, 2010

20 commits

  • Changes:
    v4: Fix the cosmetic issue of redundant dot-ops
    v3: Change rmb() to use SYNC
    v2: Include mips unistd.h and define rmb()/cpu_relax() in tools/perf/perf.h

    Signed-off-by: Deng-Cheng Zhu
    Acked-by: Ralf Baechle
    Cc: David Daney
    Cc: Peter Zijlstra
    Cc: Arnaldo Carvalho de Melo
    Cc: Frederic Weisbecker
    Cc: Paul Mackerras
    Signed-off-by: Ingo Molnar

    Deng-Cheng Zhu
     
  • I see the following error message in my kernel log from time to time:
    radeon 0000:07:00.0: ffff88007c334000 reserve failed for wait
    radeon 0000:07:00.0: ffff88007c334000 reserve failed for wait

    After investigation, it turns out that there's nothing to be afraid of
    and everything works as intended. So remove the spurious log message.

    Signed-off-by: Jean Delvare
    Reviewed-by: Jerome Glisse
    Signed-off-by: Dave Airlie

    Jean Delvare
     
  • Missing parens.

    fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=30718

    Reported-by: Dave Gilbert
    Signed-off-by: Alex Deucher
    Reviewed-by: Matt Turner
    Cc: stable@kernel.org
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • Make TV standard and DFP table revisions debug only.

    Signed-off-by: Alex Deucher
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • These bits are used for internal communication and should
    be left enabled. This may fix s/r issues on some systems.

    Signed-off-by: Alex Deucher
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • We should not allocate any object into unmappable vram if we
    have no means to access them which on all GPU means having the
    CP running and on newer GPU having the blit utility working.

    This patch limit the vram allocation to visible vram until
    we have acceleration up and running.

    Note that it's more than unlikely that we run into any issue
    related to that as when acceleration is not woring userspace
    should allocate any object in vram beside front buffer which
    should fit in visible vram.

    V2 use real_vram_size as mc_vram_size could be bigger than
    the actual amount of vram

    [airlied: fixup r700_cp_stop case]

    Signed-off-by: Jerome Glisse
    Signed-off-by: Dave Airlie

    Jerome Glisse
     
  • perf events: repair incorrect use of copy_from_user

    This makes the perf_event_period() return 0 instead of
    -EFAULT on success.

    Signed-off-by: John Blackwood
    Signed-off-by: Joe Korty
    Acked-by: Peter Zijlstra
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    John Blackwood
     
  • This patch disables the fanotify syscalls by just not building them and
    letting the cond_syscall() statements in kernel/sys_ni.c redirect them
    to sys_ni_syscall().

    It was pointed out by Tvrtko Ursulin that the fanotify interface did not
    include an explicit prioritization between groups. This is necessary
    for fanotify to be usable for hierarchical storage management software,
    as they must get first access to the file, before inotify-like notifiers
    see the file.

    This feature can be added in an ABI compatible way in the next release
    (by using a number of bits in the flags field to carry the info) but it
    was suggested by Alan that maybe we should just hold off and do it in
    the next cycle, likely with an (new) explicit argument to the syscall.
    I don't like this approach best as I know people are already starting to
    use the current interface, but Alan is all wise and noone on list backed
    me up with just using what we have. I feel this is needlessly ripping
    the rug out from under people at the last minute, but if others think it
    needs to be a new argument it might be the best way forward.

    Three choices:
    Go with what we got (and implement the new feature next cycle). Add a
    new field right now (and implement the new feature next cycle). Wait
    till next cycle to release the ABI (and implement the new feature next
    cycle). This is number 3.

    Signed-off-by: Eric Paris
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • commit 511d22247be7 (tg3: 64 bit stats on all arches), overlooked the
    rx_dropped accounting.

    We use a full "struct rtnl_link_stats64" to hold rx_dropped value, but
    forgot to report it in tg3_get_stats64().

    Use an "unsigned long" instead to shrink "struct tg3" by 176 bytes, and
    report this value to stats readers.

    Increment rx_dropped counter for oversized frames.

    Signed-off-by: Eric Dumazet
    CC: Michael Chan
    CC: Matt Carlson
    Acked-by: Matt Carlson
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • For carrier detection to work properly when binding the driver with a cable
    unplugged, netif_carrier_off() should be called after register_netdev(),
    not before.

    Signed-off-by: Paul Fertser
    Signed-off-by: David S. Miller

    Paul Fertser
     
  • Russ reported SGI UV is broken recently. He said:

    | The SRAT table shows that memory range is spread over two nodes.
    |
    | SRAT: Node 0 PXM 0 100000000-800000000
    | SRAT: Node 1 PXM 1 800000000-1000000000
    | SRAT: Node 0 PXM 0 1000000000-1080000000
    |
    |Previously, the kernel early_node_map[] would show three entries
    |with the proper node.
    |
    |[ 0.000000] 0: 0x00100000 -> 0x00800000
    |[ 0.000000] 1: 0x00800000 -> 0x01000000
    |[ 0.000000] 0: 0x01000000 -> 0x01080000
    |
    |The problem is recent community kernel early_node_map[] shows
    |only two entries with the node 0 entry overlapping the node 1
    |entry.
    |
    | 0: 0x00100000 -> 0x01080000
    | 1: 0x00800000 -> 0x01000000

    After looking at the changelog, Found out that it has been broken for a while by
    following commit

    |commit 8716273caef7f55f39fe4fc6c69c5f9f197f41f1
    |Author: David Rientjes
    |Date: Fri Sep 25 15:20:04 2009 -0700
    |
    | x86: Export srat physical topology

    Before that commit, register_active_regions() is called for every SRAT memory
    entry right away.

    Use nodememblk_range[] instead of nodes[] in order to make sure we
    capture the actual memory blocks registered with each node. nodes[]
    contains an extended range which spans all memory regions associated
    with a node, but that does not mean that all the memory in between are
    included.

    Reported-by: Russ Anderson
    Tested-by: Russ Anderson
    Signed-off-by: Yinghai Lu
    LKML-Reference:
    Acked-by: David Rientjes
    Cc: 2.6.33 .34 .35 .36
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     
  • Several other ethtool functions leave heap uncleared (potentially) by
    drivers. Some interfaces appear safe (eeprom, etc), in that the sizes
    are well controlled. In some situations (e.g. unchecked error conditions),
    the heap will remain unchanged in areas before copying back to userspace.
    Note that these are less of an issue since these all require CAP_NET_ADMIN.

    Cc: stable@kernel.org
    Signed-off-by: Kees Cook
    Acked-by: Ben Hutchings
    Signed-off-by: David S. Miller

    Kees Cook
     
  • Stanse found that i2400m_rx frees skb, but still uses skb->len even
    though it has skb_len defined. So use skb_len properly in the code.

    And also define it unsinged int rather than size_t to solve
    compilation warnings.

    Signed-off-by: Jiri Slaby
    Cc: Inaky Perez-Gonzalez
    Cc: linux-wimax@intel.com
    Acked-by: Inaky Perez-Gonzalez
    Signed-off-by: David S. Miller

    Jiri Slaby
     
  • Stanse found that ia_init_one locks a spinlock and inside of that it
    calls ia_start which calls:
    * request_irq
    * tx_init which does kmalloc(GFP_KERNEL)

    Both of them can thus sleep and result in a deadlock. I don't see a
    reason to have a per-device spinlock there which is used only there
    and inited right before the lock location. So remove it completely.

    Signed-off-by: Jiri Slaby
    Cc: Chas Williams
    Signed-off-by: David S. Miller

    Jiri Slaby
     
  • Stanse found that mpc_push frees skb and then it dereferences it. It
    is a typo, new_skb should be dereferenced there.

    Signed-off-by: Jiri Slaby
    Cc: Eric Dumazet
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Jiri Slaby
     
  • Stanse found we do in console_show:
    kfree_skb(skb);
    return skb->len;
    which is not good. Fix that by remembering the len and use it in the
    function instead.

    Signed-off-by: Jiri Slaby
    Cc: Chas Williams
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Jiri Slaby
     
  • * 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:
    kbuild: fix oldnoconfig to do the right thing
    kconfig: Temporarily disable dependency warnings
    kconfig: delay symbol direct dependency initialization

    Linus Torvalds
     
  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86:
    IPS driver: Fix limit clamping when reducing CPU power
    [PATCH 2/2] IPS driver: disable CPU turbo
    IPS driver: apply BIOS provided CPU limit if different from default
    intel_ips -- ensure we do not enable gpu turbo mode without driver linkage
    intel_ips: Print MCP limit exceeded values.
    IPS driver: verify BIOS provided limits
    IPS driver: don't toggle CPU turbo on unsupported CPUs
    NULL pointer might be used in ips_monitor()
    Release symbol on error-handling path of ips_get_i915_syms()
    old_cpu_power is wrongly divided by 65535 in ips_monitor()
    seqno mask of THM_ITV register is 16bit

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: wacom - fix pressure in Cintiq 21UX2

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
    ALSA: hda - Add another HP DV6 quirk
    OSS: soundcard: locking bug in sound_ioctl()
    ASoC: Update links for Wolfson MAINTAINERS entry
    ASoC: Add Dimitris Papastamos to Wolfson maintainers
    ASoC: Add Jassi Brar as Samsung maintainer

    Linus Torvalds