15 Sep, 2011

4 commits

  • while not doing free_irq() from irq handler is commendable, kfree() on the
    data passed to said handler before free_irq() is Not Good(tm). Freeing
    the stack it's being run on is also not nice... Solution: delay actually
    freeing stuff.

    Signed-off-by: Al Viro
    Signed-off-by: Richard Weinberger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • ... so set winch->fd to -1 before doing free_irq(), to avoid having
    winch_interrupt() come from/during the latter and attempt to do
    reactivate_fd() on something that's already gone.

    Signed-off-by: Al Viro
    Signed-off-by: Richard Weinberger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • tty->count is decremented only after ->close() had been called and
    several tasks can hit it in parallel. As the result, using tty->count
    to check if you are the last one is broken. We end up leaving line->tty
    not reset to NULL and the next IRQ on that sucker will blow up trying to
    dereference pointers from kfree'd struct tty.

    Fix is obvious: we need to use a counter of our own.

    Signed-off-by: Al Viro
    Signed-off-by: Richard Weinberger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • I could use out_close1, but that seems to be the code path to close the fd
    returned by os_create_unix_socket, and using it to close the fd returned
    by mkstemp might lead to some confusion, so I don't do it.

    Signed-off-by: Jonathan Neuschäfer
    Signed-off-by: Richard Weinberger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jonathan Neuschäfer
     

26 Jul, 2011

6 commits


25 May, 2011

2 commits

  • The ucast transport is similar to the mcast transport (and, in fact,
    shares most of its code), only it uses UDP unicast to move packets.

    Obviously this is only useful for point-to-point connections between
    virtual ethernet devices.

    Signed-off-by: Nolan Leake
    Signed-off-by: Richard Weinberger
    Cc: David Miller
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nolan Leake
     
  • UML_LIB_PATH is hardcoded to /usr/lib/uml/, on 64bit systems UML_LIB_PATH
    needs to be /usr/lib64/uml/.

    Signed-off-by: Richard Weinberger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Richard Weinberger
     

26 Apr, 2011

1 commit


10 Apr, 2011

1 commit


23 Mar, 2011

1 commit

  • Commit 6caa76b ("tty: now phase out the ioctl file pointer for good")
    removed the ioctl file pointer. User Mode Linux's line driver uses this
    ioctl and needs a signature update too.

    Signed-off-by: Richard Weinberger
    Cc: Alan Cox
    Cc: Greg KH
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Richard Weinberger
     

16 Mar, 2011

1 commit

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

    * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    rtmutex: tester: Remove the remaining BKL leftovers
    lockdep/timers: Explain in detail the locking problems del_timer_sync() may cause
    rtmutex: Simplify PI algorithm and make highest prio task get lock
    rwsem: Remove redundant asmregparm annotation
    rwsem: Move duplicate function prototypes to linux/rwsem.h
    rwsem: Unify the duplicate rwsem_is_locked() inlines
    rwsem: Move duplicate init macros and functions to linux/rwsem.h
    rwsem: Move duplicate struct rwsem declaration to linux/rwsem.h
    x86: Cleanup rwsem_count_t typedef
    rwsem: Cleanup includes
    locking: Remove deprecated lock initializers
    cred: Replace deprecated spinlock initialization
    kthread: Replace deprecated spinlock initialization
    xtensa: Replace deprecated spinlock initialization
    um: Replace deprecated spinlock initialization
    sparc: Replace deprecated spinlock initialization
    mips: Replace deprecated spinlock initialization
    cris: Replace deprecated spinlock initialization
    alpha: Replace deprecated spinlock initialization
    rtmutex-tester: Remove BKL tests

    Linus Torvalds
     

14 Mar, 2011

1 commit

  • new function: file_open_root(dentry, mnt, name, flags) opens the file
    vfs_path_lookup would arrive to.

    Note that name can be empty; in that case the usual requirement that
    dentry should be a directory is lifted.

    open-coded equivalents switched to it, may_open() got down exactly
    one caller and became static.

    Signed-off-by: Al Viro

    Al Viro
     

27 Jan, 2011

1 commit


14 Jan, 2011

3 commits


25 Nov, 2010

1 commit

  • Disable the winch irq early to make sure we don't take an interrupt part
    way through the freeing of the handler data, resulting in a crash on
    shutdown:

    winch_interrupt : read failed, errno = 9
    fd 13 is losing SIGWINCH support
    ------------[ cut here ]------------
    WARNING: at lib/list_debug.c:48 list_del+0xc6/0x100()
    list_del corruption, next is LIST_POISON1 (00100100)
    082578c8: [] dump_stack+0x22/0x24
    082578e0: [] warn_slowpath_common+0x5a/0x80
    08257908: [] warn_slowpath_fmt+0x2e/0x30
    08257920: [] list_del+0xc6/0x100
    08257940: [] free_winch+0x14/0x80
    08257958: [] winch_interrupt+0xdb/0xe0
    08257978: [] handle_IRQ_event+0x35/0xe0
    08257998: [] handle_edge_irq+0xb7/0x170
    082579bc: [] do_IRQ+0x34/0x50
    082579d4: [] sigio_handler+0x5b/0x80
    082579ec: [] sig_handler_common+0x44/0xb0
    08257a68: [] sig_handler+0x38/0x50
    08257a78: [] handle_signal+0x5c/0xa0
    08257a9c: [] hard_handler+0x18/0x20
    08257aac: [] 0xc14400

    Signed-off-by: Will Newton
    Acked-by: WANG Cong
    Cc: Jeff Dike
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Will Newton
     

23 Oct, 2010

2 commits

  • * 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:
    vfs: make no_llseek the default
    vfs: don't use BKL in default_llseek
    llseek: automatically add .llseek fop
    libfs: use generic_file_llseek for simple_attr
    mac80211: disallow seeks in minstrel debug code
    lirc: make chardev nonseekable
    viotape: use noop_llseek
    raw: use explicit llseek file operations
    ibmasmfs: use generic_file_llseek
    spufs: use llseek in all file operations
    arm/omap: use generic_file_llseek in iommu_debug
    lkdtm: use generic_file_llseek in debugfs
    net/wireless: use generic_file_llseek in debugfs
    drm: use noop_llseek

    Linus Torvalds
     
  • * 'config' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:
    BKL: introduce CONFIG_BKL.
    dabusb: remove the BKL
    sunrpc: remove the big kernel lock
    init/main.c: remove BKL notations
    blktrace: remove the big kernel lock
    rtmutex-tester: make it build without BKL
    dvb-core: kill the big kernel lock
    dvb/bt8xx: kill the big kernel lock
    tlclk: remove big kernel lock
    fix rawctl compat ioctls breakage on amd64 and itanic
    uml: kill big kernel lock
    parisc: remove big kernel lock
    cris: autoconvert trivial BKL users
    alpha: kill big kernel lock
    isapnp: BKL removal
    s390/block: kill the big kernel lock
    hpet: kill BKL, add compat_ioctl

    Linus Torvalds
     

19 Oct, 2010

1 commit

  • Three uml device drivers still use the big kernel lock,
    but all of them can be safely converted to using
    a per-driver mutex instead. Most likely this is not
    even necessary, so after further review these can
    and should be removed as well.

    The exec system call no longer requires the BKL either,
    so remove it from there, too.

    Signed-off-by: Arnd Bergmann
    Cc: Jeff Dike
    Cc: user-mode-linux-devel@lists.sourceforge.net

    Arnd Bergmann
     

16 Oct, 2010

1 commit

  • Fix a build error introduced by d6d1b650ae6acce73d55dd024 ("param: simple
    locking for sysfs-writable charp parameters").

    CC arch/um/kernel/trap.o
    arch/um/drivers/hostaudio_kern.c: In function 'hostaudio_open':
    arch/um/drivers/hostaudio_kern.c:204: error: '__param_dsp' undeclared (first use in this function)
    arch/um/drivers/hostaudio_kern.c:204: error: (Each undeclared identifier is reported only once
    arch/um/drivers/hostaudio_kern.c:204: error: for each function it appears in.)
    arch/um/drivers/hostaudio_kern.c: In function 'hostmixer_open_mixdev':
    arch/um/drivers/hostaudio_kern.c:265: error: '__param_mixer' undeclared (first use in this function)
    arch/um/drivers/hostaudio_kern.c:272: error: '__param_dsp' undeclared (first use in this function)

    Reported-by: Toralf Förster
    Tested-by: Toralf Förster
    Cc: Rusty Russell
    Cc: Takashi Iwai
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     

15 Oct, 2010

2 commits

  • All file_operations should get a .llseek operation so we can make
    nonseekable_open the default for future file operations without a
    .llseek pointer.

    The three cases that we can automatically detect are no_llseek, seq_lseek
    and default_llseek. For cases where we can we can automatically prove that
    the file offset is always ignored, we use noop_llseek, which maintains
    the current behavior of not returning an error from a seek.

    New drivers should normally not use noop_llseek but instead use no_llseek
    and call nonseekable_open at open time. Existing drivers can be converted
    to do the same when the maintainer knows for certain that no user code
    relies on calling seek on the device file.

    The generated code is often incorrectly indented and right now contains
    comments that clarify for each added line why a specific variant was
    chosen. In the version that gets submitted upstream, the comments will
    be gone and I will manually fix the indentation, because there does not
    seem to be a way to do that using coccinelle.

    Some amount of new code is currently sitting in linux-next that should get
    the same modifications, which I will do at the end of the merge window.

    Many thanks to Julia Lawall for helping me learn to write a semantic
    patch that does all this.

    ===== begin semantic patch =====
    // This adds an llseek= method to all file operations,
    // as a preparation for making no_llseek the default.
    //
    // The rules are
    // - use no_llseek explicitly if we do nonseekable_open
    // - use seq_lseek for sequential files
    // - use default_llseek if we know we access f_pos
    // - use noop_llseek if we know we don't access f_pos,
    // but we still want to allow users to call lseek
    //
    @ open1 exists @
    identifier nested_open;
    @@
    nested_open(...)
    {

    }

    @ open exists@
    identifier open_f;
    identifier i, f;
    identifier open1.nested_open;
    @@
    int open_f(struct inode *i, struct file *f)
    {

    }

    @ read disable optional_qualifier exists @
    identifier read_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    expression E;
    identifier func;
    @@
    ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
    {

    }

    @ read_no_fpos disable optional_qualifier exists @
    identifier read_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    @@
    ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
    {
    ... when != off
    }

    @ write @
    identifier write_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    expression E;
    identifier func;
    @@
    ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
    {

    }

    @ write_no_fpos @
    identifier write_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    @@
    ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
    {
    ... when != off
    }

    @ fops0 @
    identifier fops;
    @@
    struct file_operations fops = {
    ...
    };

    @ has_llseek depends on fops0 @
    identifier fops0.fops;
    identifier llseek_f;
    @@
    struct file_operations fops = {
    ...
    .llseek = llseek_f,
    ...
    };

    @ has_read depends on fops0 @
    identifier fops0.fops;
    identifier read_f;
    @@
    struct file_operations fops = {
    ...
    .read = read_f,
    ...
    };

    @ has_write depends on fops0 @
    identifier fops0.fops;
    identifier write_f;
    @@
    struct file_operations fops = {
    ...
    .write = write_f,
    ...
    };

    @ has_open depends on fops0 @
    identifier fops0.fops;
    identifier open_f;
    @@
    struct file_operations fops = {
    ...
    .open = open_f,
    ...
    };

    // use no_llseek if we call nonseekable_open
    ////////////////////////////////////////////
    @ nonseekable1 depends on !has_llseek && has_open @
    identifier fops0.fops;
    identifier nso ~= "nonseekable_open";
    @@
    struct file_operations fops = {
    ... .open = nso, ...
    +.llseek = no_llseek, /* nonseekable */
    };

    @ nonseekable2 depends on !has_llseek @
    identifier fops0.fops;
    identifier open.open_f;
    @@
    struct file_operations fops = {
    ... .open = open_f, ...
    +.llseek = no_llseek, /* open uses nonseekable */
    };

    // use seq_lseek for sequential files
    /////////////////////////////////////
    @ seq depends on !has_llseek @
    identifier fops0.fops;
    identifier sr ~= "seq_read";
    @@
    struct file_operations fops = {
    ... .read = sr, ...
    +.llseek = seq_lseek, /* we have seq_read */
    };

    // use default_llseek if there is a readdir
    ///////////////////////////////////////////
    @ fops1 depends on !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier readdir_e;
    @@
    // any other fop is used that changes pos
    struct file_operations fops = {
    ... .readdir = readdir_e, ...
    +.llseek = default_llseek, /* readdir is present */
    };

    // use default_llseek if at least one of read/write touches f_pos
    /////////////////////////////////////////////////////////////////
    @ fops2 depends on !fops1 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read.read_f;
    @@
    // read fops use offset
    struct file_operations fops = {
    ... .read = read_f, ...
    +.llseek = default_llseek, /* read accesses f_pos */
    };

    @ fops3 depends on !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier write.write_f;
    @@
    // write fops use offset
    struct file_operations fops = {
    ... .write = write_f, ...
    + .llseek = default_llseek, /* write accesses f_pos */
    };

    // Use noop_llseek if neither read nor write accesses f_pos
    ///////////////////////////////////////////////////////////

    @ fops4 depends on !fops1 && !fops2 && !fops3 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read_no_fpos.read_f;
    identifier write_no_fpos.write_f;
    @@
    // write fops use offset
    struct file_operations fops = {
    ...
    .write = write_f,
    .read = read_f,
    ...
    +.llseek = noop_llseek, /* read and write both use no f_pos */
    };

    @ depends on has_write && !has_read && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier write_no_fpos.write_f;
    @@
    struct file_operations fops = {
    ... .write = write_f, ...
    +.llseek = noop_llseek, /* write uses no f_pos */
    };

    @ depends on has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read_no_fpos.read_f;
    @@
    struct file_operations fops = {
    ... .read = read_f, ...
    +.llseek = noop_llseek, /* read uses no f_pos */
    };

    @ depends on !has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    @@
    struct file_operations fops = {
    ...
    +.llseek = noop_llseek, /* no read or write fn */
    };
    ===== End semantic patch =====

    Signed-off-by: Arnd Bergmann
    Cc: Julia Lawall
    Cc: Christoph Hellwig

    Arnd Bergmann
     
  • Commit f81f2f7c (ubd: drop unnecessary rq->sector manipulation)
    dropped request->sector manipulation in preparation for global request
    handling cleanup; unfortunately, it incorrectly assumed that the
    updated sector wasn't being used.

    ubd tries to issue as many requests as possible to io_thread. When
    issuing fails due to memory pressure or other reasons, the device is
    put on the restart list and issuing stops. On IO completion, devices
    on the restart list are scanned and IO issuing is restarted.

    ubd issues IOs sg-by-sg and issuing can be stopped in the middle of a
    request, so each device on the restart queue needs to remember where
    to restart in its current request. ubd needs to keep track of the
    issue position itself because,

    * blk_rq_pos(req) is now updated by the block layer to keep track of
    _completion_ position.

    * Multiple io_req's for the current request may be in flight, so it's
    difficult to tell where blk_rq_pos(req) currently is.

    Add ubd->rq_pos to keep track of the issue position and use it to
    correctly restart io_req issue.

    Signed-off-by: Tejun Heo
    Reported-by: Richard Weinberger
    Tested-by: Richard Weinberger
    Tested-by: Chris Frey
    Cc: stable@kernel.org
    Signed-off-by: Jens Axboe

    Tejun Heo
     

30 Sep, 2010

1 commit

  • uml_net_set_mac() was broken and luckily it was never used, before.
    What it was trying to do is spin_lock before memcopy the mac address.
    Linus attempted to fix it in assumption that someone decided the
    lock was needed. But since it was never ever used at all, and was
    just dead code, I think we can assume that it is not needed, after
    all.

    On the other hand patch [f25c80a4] was trying to use eth_mac_addr()
    in eth_configure(), *which was the real fallout*. Because of state
    checks done inside eth_mac_addr() the address was never set. I have
    not reintroduced the memcpy wrapper, but I've put a comment for future
    cats.

    The code now is back to exactly as it was before [f25c80a4]. With
    the cleanup applied. If the spin_lock is indeed needed then a contender
    should supply a test case that fails, then fix it with the proper
    locking, as a separate unrelated patch.

    CC: Julia Lawall
    CC: David S. Miller
    CC: Andrew Morton
    CC: Al Viro
    Tested-by: Boaz Harrosh
    Signed-off-by: Boaz Harrosh
    Signed-off-by: David S. Miller

    Boaz Harrosh
     

21 Aug, 2010

1 commit

  • Sysrq operations do not accept tty argument anymore so no need to pass
    it to us.

    [Stephen Rothwell : fix build breakage in drm code
    caused by sysrq using bool but not including linux/types.h]

    [Sachin Sant : fix build breakage in s390 keyboadr
    driver]

    Acked-by: Alan Cox
    Acked-by: Jason Wessel
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: Dmitry Torokhov

    Dmitry Torokhov
     

11 Aug, 2010

2 commits

  • Since the writing to sysfs can free the old one, we need to block that
    when we access the charp variables.

    Signed-off-by: Rusty Russell
    Reviewed-by: Takashi Iwai
    Tested-by: Phil Carmody
    Cc: Jeff Dike
    Cc: Dan Williams
    Cc: John W. Linville
    Cc: Jing Huang
    Cc: James E.J. Bottomley
    Cc: Greg Kroah-Hartman
    Cc: Johannes Berg
    Cc: David S. Miller
    Cc: user-mode-linux-devel@lists.sourceforge.net
    Cc: libertas-dev@lists.infradead.org
    Cc: linux-wireless@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Cc: linux-scsi@vger.kernel.org
    Cc: linux-usb@vger.kernel.org

    Rusty Russell
     
  • * 'for-2.6.36' of git://git.kernel.dk/linux-2.6-block: (149 commits)
    block: make sure that REQ_* types are seen even with CONFIG_BLOCK=n
    xen-blkfront: fix missing out label
    blkdev: fix blkdev_issue_zeroout return value
    block: update request stacking methods to support discards
    block: fix missing export of blk_types.h
    writeback: fix bad _bh spinlock nesting
    drbd: revert "delay probes", feature is being re-implemented differently
    drbd: Initialize all members of sync_conf to their defaults [Bugz 315]
    drbd: Disable delay probes for the upcomming release
    writeback: cleanup bdi_register
    writeback: add new tracepoints
    writeback: remove unnecessary init_timer call
    writeback: optimize periodic bdi thread wakeups
    writeback: prevent unnecessary bdi threads wakeups
    writeback: move bdi threads exiting logic to the forker thread
    writeback: restructure bdi forker loop a little
    writeback: move last_active to bdi
    writeback: do not remove bdi from bdi_list
    writeback: simplify bdi code a little
    writeback: do not lose wake-ups in bdi threads
    ...

    Fixed up pretty trivial conflicts in drivers/block/virtio_blk.c and
    drivers/scsi/scsi_error.c as per Jens.

    Linus Torvalds
     

10 Aug, 2010

1 commit

  • When I use OpenSUSE-11.2 on UML (> 2.6.25)
    I get lots of such errors:

    Registering fd 1 twice
    Irqs : 3, 3
    Ids : 0x09cb41a0, 0x09cb4120
    ------------[ cut here ]------------
    WARNING: at kernel/irq/manage.c:896 __free_irq+0x79/0x11a()
    Trying to free already-free IRQ 3
    Modules linked in:
    09dadc6c: [] dump_stack+0x1c/0x20
    09dadc84: [] warn_slowpath_common+0x49/0x77
    09dadc9c: [] warn_slowpath_fmt+0x26/0x2a
    09dadcb4: [] __free_irq+0x79/0x11a
    09dadce4: [] free_irq+0x2d/0x49
    09dadcf4: [] close_one_chan+0x70/0x9c
    09dadd0c: [] close_chan+0x17/0x22
    09dadd1c: [] enable_chan+0x70/0x7c
    09dadd3c: [] line_open+0x34/0x9f
    09dadd54: [] con_open+0x13/0x35
    09dadd6c: [] tty_open+0x285/0x384
    09dadda0: [] chrdev_open+0xe0/0xf9
    09daddc0: [] __dentry_open+0xf3/0x1e2
    09dadde4: [] nameidata_to_filp+0x35/0x49
    09daddfc: [] do_last+0x409/0x50e
    09dade28: [] do_filp_open+0x175/0x446
    09dadecc: [] do_sys_open+0x4a/0x128
    09dadf04: [] sys_open+0x19/0x21
    09dadf28: [] handle_syscall+0x7a/0x98
    09dadf78: [] userspace+0x2c9/0x370
    09dadfe0: [] fork_handler+0x53/0x5b
    09dadffc: [] 0x766564

    ---[ end trace 9ebc1094aaf4bded ]---

    This patch fixes the issue.

    Signed-off-by: Richard Weinberger
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Richard Weinberger
     

08 Aug, 2010

2 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: (214 commits)
    ALSA: hda - Add pin-fix for HP dc5750
    ALSA: als4000: Fix potentially invalid DMA mode setup
    ALSA: als4000: enable burst mode
    ALSA: hda - Fix initial capsrc selection in patch_alc269()
    ASoC: TWL4030: Capture route runtime DAPM ordering fix
    ALSA: hda - Add PC-beep whitelist for an Intel board
    ALSA: hda - More relax for pending period handling
    ALSA: hda - Define AC_FMT_* constants
    ALSA: hda - Fix beep frequency on IDT 92HD73xx and 92HD71Bxx codecs
    ALSA: hda - Add support for HDMI HBR passthrough
    ALSA: hda - Set Stream Type in Stream Format according to AES0
    ALSA: hda - Fix Thinkpad X300 so SPDIF is not exposed
    ALSA: hda - FIX to not expose SPDIF on Thinkpad X301, since it does not have the ability to use SPDIF
    ASoC: wm9081: fix resource reclaim in wm9081_register error path
    ASoC: wm8978: fix a memory leak if a wm8978_register fail
    ASoC: wm8974: fix a memory leak if another WM8974 is registered
    ASoC: wm8961: fix resource reclaim in wm8961_register error path
    ASoC: wm8955: fix resource reclaim in wm8955_register error path
    ASoC: wm8940: fix a memory leak if wm8940_register return error
    ASoC: wm8904: fix resource reclaim in wm8904_register error path
    ...

    Linus Torvalds
     
  • The open and release block_device_operations are currently
    called with the BKL held. In order to change that, we must
    first make sure that all drivers that currently rely
    on this have no regressions.

    This blindly pushes the BKL into all .open and .release
    operations for all block drivers to prepare for the
    next step. The drivers can subsequently replace the BKL
    with their own locks or remove it completely when it can
    be shown that it is not needed.

    The functions blkdev_get and blkdev_put are the only
    remaining users of the big kernel lock in the block
    layer, besides a few uses in the ioctl code, none
    of which need to serialize with blkdev_{get,put}.

    Most of these two functions is also under the protection
    of bdev->bd_mutex, including the actual calls to
    ->open and ->release, and the common code does not
    access any global data structures that need the BKL.

    Signed-off-by: Arnd Bergmann
    Acked-by: Christoph Hellwig
    Signed-off-by: Jens Axboe

    Arnd Bergmann
     

22 Jul, 2010

1 commit

  • There are two initializations of ndo_set_mac_address, one to a local
    function that is not used otherwise and one to a function that is defined
    elsewhere.

    The semantic match that finds this problem is as follows:
    (http://coccinelle.lip6.fr/)

    //
    @r@
    identifier I, s, fld;
    position p0,p;
    expression E;
    @@

    struct I s =@p0 { ... .fld@p = E, ...};

    @s@
    identifier I, s, r.fld;
    position r.p0,p;
    expression E;
    @@

    struct I s =@p0 { ... .fld@p = E, ...};

    @script:python@
    p0 << r.p0;
    fld << r.fld;
    ps << s.p;
    pr << r.p;
    @@

    if int(ps[0].line)

    akpm:

    - Use the standard eth_mac_addr() in uml_net_set_mac()

    - Remove unneeded and racy local set_ether_mac()

    - Remove duplicated (and incorrect)
    uml_netdev_ops.ndo_set_mac_address initializer.

    Fixes 8bb95b39a16ed55226810596f92216c53329d2fe ("uml: convert network
    device to netdevice ops").

    [akpm@linux-foundation.org: rework as above]
    Signed-off-by: Julia Lawall
    Cc: Stephen Hemminger
    Cc: "David S. Miller"
    Signed-off-by: Andrew Morton
    Signed-off-by: David S. Miller

    Julia Lawall
     

12 Jul, 2010

1 commit

  • This moves the lock_kernel() call from soundcore_open
    to the individual OSS device drivers, where we can deal
    with it one driver at a time if needed, or just kill
    off the drivers.

    All core components in ALSA already provide
    adequate locking in their open()-functions
    and do not require the big kernel lock, so
    there is no need to add the BKL there.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Takashi Iwai

    Arnd Bergmann
     

24 May, 2010

1 commit

  • * 'bkl/ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:
    uml: Pushdown the bkl from harddog_kern ioctl
    sunrpc: Pushdown the bkl from sunrpc cache ioctl
    sunrpc: Pushdown the bkl from ioctl
    autofs4: Pushdown the bkl from ioctl
    uml: Convert to unlocked_ioctls to remove implicit BKL
    ncpfs: BKL ioctl pushdown
    coda: Clean-up whitespace problems in pioctl.c
    coda: BKL ioctl pushdown
    drivers: Push down BKL into various drivers
    isdn: Push down BKL into ioctl functions
    scsi: Push down BKL into ioctl functions
    dvb: Push down BKL into ioctl functions
    smbfs: Push down BKL into ioctl function
    coda/psdev: Remove BKL from ioctl function
    um/mmapper: Remove BKL usage
    sn_hwperf: Kill BKL usage
    hfsplus: Push down BKL into ioctl function

    Linus Torvalds
     

22 May, 2010

1 commit


21 May, 2010

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (44 commits)
    vlynq: make whole Kconfig-menu dependant on architecture
    add descriptive comment for TIF_MEMDIE task flag declaration.
    EEPROM: max6875: Header file cleanup
    EEPROM: 93cx6: Header file cleanup
    EEPROM: Header file cleanup
    agp: use NULL instead of 0 when pointer is needed
    rtc-v3020: make bitfield unsigned
    PCI: make bitfield unsigned
    jbd2: use NULL instead of 0 when pointer is needed
    cciss: fix shadows sparse warning
    doc: inode uses a mutex instead of a semaphore.
    uml: i386: Avoid redefinition of NR_syscalls
    fix "seperate" typos in comments
    cocbalt_lcdfb: correct sections
    doc: Change urls for sparse
    Powerpc: wii: Fix typo in comment
    i2o: cleanup some exit paths
    Documentation/: it's -> its where appropriate
    UML: Fix compiler warning due to missing task_struct declaration
    UML: add kernel.h include to signal.c
    ...

    Linus Torvalds