23 Jul, 2009

33 commits

  • This patch enables rumble in Thrustmaster Dual 3-in-1 trigger gamepads (in both
    PC and PS3 modes). It uses the same code as Thrustmaster FireStorm Dual Power 2,
    so it only adds new USB IDs to hid-core.c and hid-tmff.c

    Signed-off-by: Ruben Aos Garralda
    Signed-off-by: Jiri Kosina

    Ruben Aos Garralda
     
  • When both touch and pen are active send a tool announcement before
    sending any status changes so that event users may differentiate
    which tool is changing.

    Restored three usage codes used by the pen.

    Signed-off-by: Rafi Rubin
    Acked-by: Stephane Chatty
    Signed-off-by: Jiri Kosina

    Rafi Rubin
     
  • Avoid double spin_lock_init on usbhid->lock.

    Signed-off-by: Sergey Senozhatsky
    Signed-off-by: Jiri Kosina

    Sergey Senozhatsky
     
  • Add force feedback support for Logitech WingMan Formula Force GP
    (0x046d/0xc293).

    Reported-by: wylda@volny.cz
    Tested-by: wylda@volny.cz
    Signed-off-by: Jiri Kosina

    Jiri Kosina
     
  • This patch extends the existing Samsung IrDA (0419:0001) quirk file with newly
    reported variants:

    * New device variants with 203 byte and 135 byte report descriptors were
    reported to be recognized incorrectly. This patch adds an autodetection for
    those two, using report descriptor size to enable new quirks.

    * Any other unknown 0419:0001 variants will now be treated without any quirk
    flags (i.e. IGNORE_HIDINPUT/HIDDEV_FORCE will not be set by default anymore).

    More details:

    1. Descriptor size 184 bytes ("Satelco bundled remote")
    Already supported since kernel 2.6.25 (my old patch).

    2. Descriptor size 203 bytes ("Optronix remote")
    This receiver mostly works with the regular HID input driver. Only when some
    keys are released, another spurious key press event is interpreted due to
    incorrect array ranges. According to HID 1.11, section 6.2.2.5, arrays should
    return a 0 value when no control is asserted, and ranges should go from 1 to
    the number of elements. The patch clips the value with a logical range from
    1..15 (instead of originally 0..18).

    Ticket with more information available at
    https://bugs.launchpad.net/bugs/326986

    3. Descriptor size 135 bytes ("Gotview remote")
    This receiver has a similar issue than the previous one, i.e. it mostly works
    with regular HID input, except some key press events get stuck on key release.
    The patch clips the array value from 1..14 (instead of originally 0..17).

    Ticket with more information available at
    http://bugs.archlinux.org/task/15216

    4. Other unknown variants (found one report with 218 bytes,
    but no further information about issues)

    For such unknown variants we should refrain from changing any device flags.
    Currently, HIDINPUT is suppressed and HIDDEV is enforced (because in 2.6.25 the
    quirk table did not yet allow differentiating variants and we
    did not expect variants either). Now we should be as strict as
    possible and enable it only for the first variant above.

    Signed-off-by: Robert Schedel
    Signed-off-by: Jiri Kosina

    Robert Schedel
     
  • …nel/git/peterz/linux-2.6-perf

    * 'perf-counters-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-perf: (31 commits)
    perf_counter tools: Give perf top inherit option
    perf_counter tools: Fix vmlinux symbol generation breakage
    perf_counter: Detect debugfs location
    perf_counter: Add tracepoint support to perf list, perf stat
    perf symbol: C++ demangling
    perf: avoid structure size confusion by using a fixed size
    perf_counter: Fix throttle/unthrottle event logging
    perf_counter: Improve perf stat and perf record option parsing
    perf_counter: PERF_SAMPLE_ID and inherited counters
    perf_counter: Plug more stack leaks
    perf: Fix stack data leak
    perf_counter: Remove unused variables
    perf_counter: Make call graph option consistent
    perf_counter: Add perf record option to log addresses
    perf_counter: Log vfork as a fork event
    perf_counter: Synthesize VDSO mmap event
    perf_counter: Make sure we dont leak kernel memory to userspace
    perf_counter tools: Fix index boundary check
    perf_counter: Fix the tracepoint channel to perfcounters
    perf_counter, x86: Extend perf_counter Pentium M support
    ...

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

    * 'core-fixes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    softirq: introduce tasklet_hrtimer infrastructure

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

    * 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    clocksource: Prevent NULL pointer dereference
    timer: Avoid reading uninitialized data

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

    * 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    genirq: Delegate irq affinity setting to the irq thread

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

    * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    sched: fix nr_uninterruptible accounting of frozen tasks really
    sched: fix load average accounting vs. cpu hotplug
    sched: Account for vruntime wrapping

    Linus Torvalds
     
  • * 'tj-block-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc:
    virtio_blk: mark virtio_blk with __refdata to kill spurious section mismatch
    block: sysfs fix mismatched queue_var_{store,show} in 64bit kernel
    ataflop: adjust NULL test
    block: fix failfast merge testing in elv_rq_merge_ok()
    z2ram: Small cleanup for z2ram.c

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2:
    fs/Kconfig: move nilfs2 out

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6:
    ide-tape: Don't leak kernel stack information
    ide: fix memory leak when flush command is issued

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (37 commits)
    sky2: Avoid races in sky2_down
    drivers/net/mlx4: Adjust constant
    drivers/net: Move a dereference below a NULL test
    drivers/net: Move a dereference below a NULL test
    connector: maintainer/mail update.
    USB host CDC Phonet network interface driver
    macsonic, jazzsonic: fix oops on module unload
    macsonic: move probe function to .devinit.text
    can: switch carrier on if device was stopped while in bus-off state
    can: restart device even if dev_alloc_skb() fails
    can: sja1000: remove duplicated includes
    New device ID for sc92031 [1088:2031]
    3c589_cs: re-initialize the multicast in the tc589_reset
    Fix error return for setsockopt(SO_TIMESTAMPING)
    netxen: fix thermal check and shutdown
    netxen: fix deadlock on dev close
    netxen: fix context deletion sequence
    net: Micrel KS8851 SPI network driver
    tcp: Use correct peer adr when copying MD5 keys
    tcp: Fix MD5 signature checking on IPv4 mapped sockets
    ...

    Linus Torvalds
     
  • * 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:
    NFSv4: Fix a problem whereby a buggy server can oops the kernel
    NFSv4: Fix an NFSv4 mount regression
    NFSv4: Fix an Oops in nfs4_free_lock_state

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
    ALSA: ctxfi: Swapped SURROUND-SIDE channels on emu20k2
    ALSA: ca0106 - Fix the max capture buffer size
    ALSA: hda - Fix pin-setup for Sony VAIO with STAC9872 codecs
    ALSA: hda - Add quirk for Gateway T6834c laptop
    ALSA: OSS sequencer should be initialized after snd_seq_system_client_init
    ALSA: sound/isa: convert nested spin_lock_irqsave to spin_lock
    ALSA: hda_codec: Check for invalid zero connections

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
    HID: Move dereferences below a NULL test
    HID: hiddev, fix lock imbalance

    Linus Torvalds
     
  • the "reserved" field was not initialized to zero, resulting in 4 bytes
    of stack data leaking to userspace....

    Signed-off-by: Arjan van de Ven
    Acked-by: Peter Zijlstra
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     
  • * 'linux-next' of git://git.infradead.org/ubi-2.6:
    UBI: fix bug in image sequence number handling
    UBI: gluebi: initialize ubi_num field

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: atkbd - add force relese key quirk for Soltech TA12
    Input: fix EVIOCGNAME/JSIOCGNAME regression
    Input: atkbd - add forced release keys quirk for FSC Amilo Pi 3525
    Input: pcspkr - switch driver to dev_pm_ops
    Input: xpad - don't resend successfully sent outgoing requests
    Input: wistron_btns - recognize Maxdata Pro 7000 notebooks

    Linus Torvalds
     
  • Currently, perf top -p only tracks the pid provided, which isn't very useful
    for watching forky loads, so give it an inherit option.

    Signed-off-by: Mike Galbraith
    Cc: Ingo Molnar
    Signed-off-by: Peter Zijlstra
    LKML-Reference:

    Mike Galbraith
     
  • vmlinux meets the criteria for symbol adjustment, which breaks vmlinux generated symbols.
    Fix this by exempting vmlinux. This is a bit fragile in that someone could change the
    kernel dso's name, but currently that name is also hardwired.

    Signed-off-by: Mike Galbraith
    Cc: Ingo Molnar
    Signed-off-by: Peter Zijlstra
    LKML-Reference:

    Mike Galbraith
     
  • If "/sys/kernel/debug" is not a debugfs mount point, search for the debugfs
    filesystem in /proc/mounts, but also allows the user to specify
    '--debugfs-dir=blah' or set the environment variable: 'PERF_DEBUGFS_DIR'

    Signed-off-by: Jason Baron
    [ also made it probe "/debug" by default ]
    Signed-off-by: Peter Zijlstra
    LKML-Reference:

    Jason Baron
     
  • Add support to 'perf list' and 'perf stat' for kernel tracepoints. The
    implementation creates a 'for_each_subsystem' and 'for_each_event' for
    easy iteration over the tracepoints.

    Signed-off-by: Jason Baron
    Signed-off-by: Peter Zijlstra
    LKML-Reference:

    Jason Baron
     
  • [acme@doppio ~]$ perf report -s comm,dso,symbol -C firefox -d /usr/lib64/xulrunner-1.9.1/libxul.so | grep :: | head
    2.21% [.] nsDeque::Push(void*)
    1.78% [.] GraphWalker::DoWalk(nsDeque&)
    1.30% [.] GCGraphBuilder::AddNode(void*, nsCycleCollectionParticipant*)
    1.27% [.] XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode)
    1.18% [.] imgContainer::DrawFrameTo(gfxIImageFrame*, gfxIImageFrame*, nsRect&)
    1.13% [.] nsDeque::PopFront()
    1.11% [.] nsGlobalWindow::RunTimeout(nsTimeout*)
    0.97% [.] nsXPConnect::Traverse(void*, nsCycleCollectionTraversalCallback&)
    0.95% [.] nsJSEventListener::cycleCollection::Traverse(void*, nsCycleCollectionTraversalCallback&)
    0.95% [.] nsCOMPtr_base::~nsCOMPtr_base()
    [acme@doppio ~]$

    Cc: Pekka Enberg
    Cc: Vegard Nossum
    Cc: Paul Mackerras
    Cc: Frédéric Weisbecker
    Suggested-by: Clark Williams
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Peter Zijlstra
    LKML-Reference:

    Arnaldo Carvalho de Melo
     
  • for some reason, this structure gets compiled as 36 bytes in some files
    (the ones that alloacte it) but 40 bytes in others (the ones that use it).
    The cause is an off_t type that gets a different size in different
    compilation units for some yet-to-be-explained reason.

    But the effect is disasterous; the size/offset members of the struct
    are at different offsets, and result in mostly complete garbage.
    The parser in perf is so robust that this all gets hidden, and after
    skipping an certain amount of samples, it recovers.... so this bug
    is not normally noticed.

    .... except when you want every sample to be exact.

    Fix this by just using an explicitly sized type.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Peter Zijlstra
    LKML-Reference:

    Arjan van de Ven
     
  • Right now we only print PERF_EVENT_THROTTLE + 1 (ie PERF_EVENT_UNTHROTTLE).
    Fix this to print both a throttle and unthrottle event.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Peter Zijlstra
    LKML-Reference:

    Anton Blanchard
     
  • perf stat and perf record currently look for all options on the command
    line. This can lead to some confusion:

    # perf stat ls -l
    Error: unknown switch `l'

    While we can work around this by adding '--' before the command, the git
    option parsing code can stop at the first non option:

    # perf stat ls -l
    Performance counter stats for 'ls -l':
    ....

    Signed-off-by: Anton Blanchard
    Signed-off-by: Peter Zijlstra
    LKML-Reference:

    Anton Blanchard
     
  • Anton noted that for inherited counters the counter-id as provided by
    PERF_SAMPLE_ID isn't mappable to the id found through PERF_RECORD_ID
    because each inherited counter gets its own id.

    His suggestion was to always return the parent counter id, since that
    is the primary counter id as exposed. However, these inherited
    counters have a unique identifier so that events like
    PERF_EVENT_PERIOD and PERF_EVENT_THROTTLE can be specific about which
    counter gets modified, which is important when trying to normalize the
    sample streams.

    This patch removes PERF_EVENT_PERIOD in favour of PERF_SAMPLE_PERIOD,
    which is more useful anyway, since changing periods became a lot more
    common than initially thought -- rendering PERF_EVENT_PERIOD the less
    useful solution (also, PERF_SAMPLE_PERIOD reports the more accurate
    value, since it reports the value used to trigger the overflow,
    whereas PERF_EVENT_PERIOD simply reports the requested period changed,
    which might only take effect on the next cycle).

    This still leaves us PERF_EVENT_THROTTLE to consider, but since that
    _should_ be a rare occurrence, and linking it to a primary id is the
    most useful bit to diagnose the problem, we introduce a
    PERF_SAMPLE_STREAM_ID, for those few cases where the full
    reconstruction is important.

    [Does change the ABI a little, but I see no other way out]

    Suggested-by: Anton Blanchard
    Signed-off-by: Peter Zijlstra
    LKML-Reference:

    Peter Zijlstra
     
  • Per example of Arjan's patch, I went through and found a few more.

    Signed-off-by: Peter Zijlstra

    Peter Zijlstra
     
  • the "reserved" field was not initialized to zero, resulting in 4 bytes
    of stack data leaking to userspace....

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Peter Zijlstra

    Arjan van de Ven
     
  • Fix a gcc unused variables warning.

    Signed-off-by: Peter Zijlstra

    Peter Zijlstra
     
  • Peter Zijlstra
     

22 Jul, 2009

7 commits

  • There's some odd bug in gcc-4.2 where it miscompiles a simple loop whent
    he loop counter is of type 'unsigned char' and it should count to 128.

    The compiler will incorrectly decide that a trivial loop like this:

    unsigned char i, ...

    for (i = 0; i < 128; i++) {
    ..

    is endless, and will compile it to a single instruction that just
    branches to itself.

    This was triggered by the addition of '-fno-strict-overflow', and we
    could play games with compiler versions and go back to '-fwrapv'
    instead, but the trivial way to avoid it is to just make the loop
    induction variable be an 'int' instead.

    Thanks to Krzysztof Oledzki for reporting and testing and to Troy Moure
    for digging through assembler differences and finding it.

    Reported-and-tested-by: Krzysztof Oledzki
    Found-by: Troy Moure
    Gcc-bug-acked-by: Ian Lance Taylor
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • commit ca109491f (hrtimer: removing all ur callback modes) moved all
    hrtimer callbacks into hard interrupt context when high resolution
    timers are active. That breaks code which relied on the assumption
    that the callback happens in softirq context.

    Provide a generic infrastructure which combines tasklets and hrtimers
    together to provide an in-softirq hrtimer experience.

    Signed-off-by: Peter Zijlstra
    Cc: torvalds@linux-foundation.org
    Cc: kaber@trash.net
    Cc: David Miller
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    Peter Zijlstra
     
  • Reset rx chain before trying to drain it.
    Shut interrupts off last, incase there's something to report.

    Signed-off-by: Mike McCormack
    Acked-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Mike McCormack
     
  • Don't leak kernel stack information through uninitialized structure members.

    Signed-off-by: Michael Buesch
    Acked-by: Borislav Petkov .
    Signed-off-by: David S. Miller

    Michael Buesch
     
  • I'm using ide on 2.6.30.1 with xfs filesystem. I noticed a kernel memory
    leak after writing lots of data, the kmalloc-96 slab cache keeps
    growing. It seems the struct ide_cmd kmalloced by idedisk_prepare_flush
    is never kfreed.

    Commit a09485df9cda49fbde2766c86eb18a9cae585162 ("ide: move request
    type specific code from ide_end_drive_cmd() to callers (v3)") and
    f505d49ffd25ed062e76ffd17568d3937fcd338c ("ide: fix barriers support")
    cause this regression, cmd->rq must now be set for ide_complete_cmd to
    honor the IDE_TFLAG_DYN flag.

    Signed-off-by: Maxime Bizon
    Acked-by: Bartlomiej Zolnierkiewicz
    Signed-off-by: David S. Miller

    Maxime Bizon
     
  • We just had a case in which a buggy server occasionally returns the wrong
    attributes during an OPEN call. While the client does catch this sort of
    condition in nfs4_open_done(), and causes the nfs4_atomic_open() to return
    -EISDIR, the logic in nfs_atomic_lookup() is broken, since it causes a
    fallback to an ordinary lookup instead of just returning the error.

    When the buggy server then returns a regular file for the fallback lookup,
    the VFS allows the open, and bad things start to happen, since the open
    file doesn't have any associated NFSv4 state.

    The fix is firstly to return the EISDIR/ENOTDIR errors immediately, and
    secondly to ensure that we are always careful when dereferencing the
    nfs_open_context state pointer.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • Commit 008f55d0e019943323c20a03493a2ba5672a4cc8 (nfs41: recover lease in
    _nfs4_lookup_root) forces the state manager to always run on mount. This is
    a bug in the case of NFSv4.0, which doesn't require us to send a
    setclientid until we want to grab file state.

    In any case, this is completely the wrong place to be doing state
    management. Moving that code into nfs4_init_session...

    Signed-off-by: Trond Myklebust

    Trond Myklebust