05 Nov, 2012

3 commits


04 Nov, 2012

2 commits


31 Oct, 2012

1 commit


30 Oct, 2012

6 commits

  • When disconnect callback is called, each component should wake up
    sleepers and check card->shutdown flag for avoiding the endless sleep
    blocking the proper resource release.

    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • For more strict protection for wild disconnections, a refcount is
    introduced to the card instance, and let it up/down when an object is
    referred via snd_lookup_*() in the open ops.

    The free-after-last-close check is also changed to check this refcount
    instead of the empty list, too.

    Reported-by: Matthieu CASTET
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Similar like the previous commit, cover with chip->shutdown_rwsem
    and chip->shutdown checks.

    Reported-by: Matthieu CASTET
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Replace mutex with rwsem for codec->shutdown protection so that
    concurrent accesses are allowed.

    Also add the protection to snd_usb_autosuspend() and
    snd_usb_autoresume(), too.

    Reported-by: Matthieu CASTET
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Close some races at disconnection of a USB audio device by adding the
    chip->shutdown_mutex and chip->shutdown check at appropriate places.

    The spots to put bandaids are:
    - PCM prepare, hw_params and hw_free
    - where the usb device is accessed for communication or get speed, in
    mixer.c and others; the device speed is now cached in subs->speed
    instead of accessing to chip->dev

    The accesses in PCM open and close don't need the mutex protection
    because these are already handled in the core PCM disconnection code.

    The autosuspend/autoresume codes are still uncovered by this patch
    because of possible mutex deadlocks. They'll be covered by the
    upcoming change to rwsem.

    Also the mixer codes are untouched, too. These will be fixed in
    another patch, too.

    Reported-by: Matthieu CASTET
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Fix races at PCM disconnection:
    - while a PCM device is being opened or closed
    - while the PCM state is being changed without lock in prepare,
    hw_params, hw_free ops

    Reported-by: Matthieu CASTET
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

28 Oct, 2012

3 commits


26 Oct, 2012

3 commits


24 Oct, 2012

1 commit


22 Oct, 2012

1 commit


21 Oct, 2012

4 commits

  • snd_miro_probe is a static function that is only called twice in the file
    that defines it. At each call site, its argument is freed using
    snd_card_free. Thus, there is no need for snd_miro_probe to call
    snd_card_free on its argument on any of its error exit paths.

    Because snd_card_free both reads the fields of its argument and kfrees its
    argments, the results of the second snd_card_free should be unpredictable.

    A simplified version of the semantic match that finds this problem is as
    follows: (http://coccinelle.lip6.fr/)

    //
    @r@
    identifier f,free,a;
    parameter list[n] ps;
    type T;
    expression e;
    @@

    f(ps,T a,...) {
    ... when any
    when != a = e
    if(...) { ... free(a); ... return ...; }
    ... when any
    }

    @@
    identifier r.f,r.free;
    expression x,a;
    expression list[r.n] xs;
    @@

    * x = f(xs,a,...);
    if (...) { ... free(a); ... return ...; }
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Takashi Iwai

    Julia Lawall
     
  • Linus Torvalds
     
  • Pull arm64 fixes from Catalin Marinas:
    "Main changes:
    - AArch64 Linux compilation fixes following 3.7-rc1 changes
    (MODULES_USE_ELF_RELA, update_vsyscall() prototype)
    - Unnecessary register setting in start_thread() (thanks to Al Viro)
    - ptrace fixes"

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64:
    arm64: fix alignment padding in assembly code
    arm64: ptrace: use HW_BREAKPOINT_EMPTY type for disabled breakpoints
    arm64: ptrace: make structure padding explicit for debug registers
    arm64: No need to set the x0-x2 registers in start_thread()
    arm64: Ignore memory blocks below PHYS_OFFSET
    arm64: Fix the update_vsyscall() prototype
    arm64: Select MODULES_USE_ELF_RELA
    arm64: Remove duplicate inclusion of mmu_context.h in smp.c

    Linus Torvalds
     
  • By some reason, Toshiba laptop doesn't like the EAPD turned up for the
    headphone pin. Add a fix up code to force to turn down EAPD for NID
    0x15.

    Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=569991

    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

20 Oct, 2012

16 commits

  • An interesting effect of using the generic version of linkage.h
    is that the padding is defined in terms of x86 NOPs, which can have
    even more interesting effects when the assembly code looks like this:

    ENTRY(func1)
    mov x0, xzr
    ENDPROC(func1)
    // fall through
    ENTRY(func2)
    mov x0, #1
    ret
    ENDPROC(func2)

    Admittedly, the code is not very nice. But having code from another
    architecture doesn't look completely sane either.

    The fix is to add arm64's version of linkage.h, which causes the insertion
    of proper AArch64 NOPs.

    Signed-off-by: Marc Zyngier
    Signed-off-by: Catalin Marinas

    Marc Zyngier
     
  • checkpatch.pl discourages the use of spaces at the beginning of lines.
    Some of the CTL_ELEM defines were not properly indented.

    This patch replaces the leading spaces by tabs. No functionality is
    changed, the commit is purely cosmetic.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • According to the documentation, AES32 cards use a different bit position
    for reporting the sync_in status.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • In contrast to AES32, MADI uses the first status register to report the
    sync_in status.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • MADI and MADIface used to report the autosync_sample_rate. This
    functionality was lost in commit
    0dca1793063c28dde8f6c49c9c72203fe5cb6efc, this commit now adds it back.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • Missing breaks lead to a fall-through, thus causing the wrong
    autosync_sample_rate to be reported.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • Due to missing breaks and the resulting fall-through, card subtype
    selection was effectively missing, thus causing the wrong sync check
    functions to be called.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • As a follow-up to a97bda7d29d02a2e9c6609d0947b15e55f5200e5, report the
    external sample rate as system_sample_rate when in slave mode.

    For PCIe MADI cards, the DDS value automatically contains the external
    sample rate, but the PCI version needs this manual workaround.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • The DDS value is the actual physical sample rate. We set it indirectly
    when selecting 44100, 48000 and so on via snd_hdspm_hw_params or
    hdspm_set_clock_source.

    This commit now allows the DDS value to be altered at runtime, thus
    speeding up or slowing down the physical sample rate. This is required
    for MADI's varispeed that allows for ±12.5% speed adjustment from the
    "selected" rate (32kHz, 44100kHz, 48kHz and so on).

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • The min/max call needed to have explicit types on some architectures
    (e.g. mn10300). Use clamp_t instead to avoid the warning:

    kernel/sys.c: In function 'override_release':
    kernel/sys.c:1287:10: warning: comparison of distinct pointer types lacks a cast [enabled by default]

    Reported-by: Fengguang Wu
    Signed-off-by: Kees Cook
    Signed-off-by: Linus Torvalds

    Kees Cook
     
  • Pull perf fixes from Ingo Molnar:
    "Assorted small fixes"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf python: Properly link with libtraceevent
    perf hists browser: Add back callchain folding symbol
    perf tools: Fix build on sparc.
    perf python: Link with libtraceevent
    perf python: Initialize 'page_size' variable
    tools lib traceevent: Fix missed freeing of subargs in free_arg() in filter
    lib tools traceevent: Add back pevent assignment in __pevent_parse_format()
    perf hists browser: Fix off-by-two bug on the first column
    perf tools: Remove warnings on JIT samples for srcline sort key
    perf tools: Fix segfault when using srcline sort key
    perf: Require exclude_guest to use PEBS - kernel side enforcement
    perf tool: Precise mode requires exclude_guest

    Linus Torvalds
     
  • Namhyung Kim reported that the build fails with:

    GEN python/perf.so
    gcc: error: python_ext_build/tmp//../../libtraceevent.a: No such file or directory
    error: command 'gcc' failed with exit status 1
    cp: cannot stat `python_ext_build/lib/perf.so': No such file or directory
    make: *** [python/perf.so] Error 1

    We need to propagate the TE_PATH variable to the setup.py file.

    Reported-by: Namhyung Kim
    Signed-off-by: Arnaldo Carvalho de Melo
    Link: http://lkml.kernel.org/n/tip-8umiPbm4sxpknKivbjgykhut@git.kernel.org
    [ Fixed superfluous variable build error. ]
    Signed-off-by: Ingo Molnar

    Arnaldo Carvalho de Melo
     
  • …it/acme/linux into perf/urgent

    Pull perf/urgent fixes from Arnaldo Carvalho de Melo:

    * The python binding needs to link with libtraceevent and to initialize
    the 'page_size' variable so that mmaping works again.

    * The callchain folding character that appears on the TUI just before
    the overhead had disappeared due to recent changes, add it back.

    * Intel PEBS in VT-x context uses the DS address as a guest linear address,
    even though its programmed by the host as a host linear address. This either
    results in guest memory corruption and or the hardware faulting and 'crashing'
    the virtual machine. Therefore we have to disable PEBS on VT-x enter and
    re-enable on VT-x exit, enforcing a strict exclude_guest.

    Kernel side enforcement fix by Peter Zijlstra, tooling side fix by David Ahern.

    * Fix build on sparc due to UAPI, fix from David Miller.

    * Fixes for the srclike sort key for unresolved symbols and when processing
    samples in JITted code, where we don't have an ELF file, just an special
    symbol table, fixes from Namhyung Kim.

    * Fix some leaks in libtraceevent, from Steven Rostedt.

    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     
  • Pull ARM soc fixes from Olof Johansson:
    "A set of fixes and some minor cleanups for -rc2:

    - A series from Arnd that fixes warnings in drivers and other code
    included by ARM defconfigs. Most have been acked by corresponding
    maintainers (and seem quite hard to argue not picking up anyway in
    the few exception cases).
    - A few misc patches from the list for integrator/vt8500/i.MX
    - A batch of fixes to OMAP platforms, fixing:
    - boot problems on beaglebone,
    - regression fixes for local timers
    - clockdomain locking fixes
    - a few boot/sparse warnings
    - For Tegra:
    - Clock rate calculation overflow fix
    - Revert a change that removed timer clocks and a fix for symbol
    name clashes
    - For Renesas:
    - IO accessor / annotation cleanups to remove warnings
    - For Kirkwood/Dove/mvebu:
    - Fixes for device trees for Dove (some minor cleanups, some fixes)
    - Fixes for the mvebu gpio driver
    - Fix build problem for Feroceon due to missing ifdefs
    - Fix lsxl DTS files"

    * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (31 commits)
    ARM: kirkwood: fix buttons on lsxl boards
    ARM: kirkwood: fix LEDs names for lsxl boards
    ARM: Kirkwood: fix disabling CACHE_FEROCEON_L2
    gpio: mvebu: Add missing breaks in mvebu_gpio_irq_set_type
    ARM: dove: Add crypto engine to DT
    ARM: dove: Remove watchdog from DT
    ARM: dove: Restructure SoC device tree descriptor
    ARM: dove: Fix clock names of sata and gbe
    ARM: dove: Fix tauros2 device tree init
    ARM: dove: Add pcie clock support
    ARM: OMAP2+: Allow kernel to boot even if GPMC fails to reserve memory
    ARM: OMAP: clockdomain: Fix locking on _clkdm_clk_hwmod_enable / disable
    ARM: s3c: mark s3c2440_clk_add as __init_refok
    spi/s3c64xx: use correct dma_transfer_direction type
    ARM: OMAP4: devices: fixup OMAP4 DMIC platform device error message
    ARM: OMAP2+: clock data: Add dev-id for the omap-gpmc dummy fck
    ARM: OMAP: resolve sparse warning concerning debug_card_init()
    ARM: OMAP4: Fix twd_local_timer_register regression
    ARM: tegra: add tegra_timer clock
    ARM: tegra: rename tegra system timer
    ...

    Linus Torvalds
     
  • Emit the magic string that indicates a module has a signature after the
    signature data instead of before it. This allows module_sig_check() to
    be made simpler and faster by the elimination of the search for the
    magic string. Instead we just need to do a single memcmp().

    This works because at the end of the signature data there is the
    fixed-length signature information block. This block then falls
    immediately prior to the magic number.

    From the contents of the information block, it is trivial to calculate
    the size of the signature data and thus the size of the actual module
    data.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells