09 Jan, 2012

1 commit

  • We leak in drivers/scsi/aacraid/commctrl.c::aac_send_raw_srb() :

    We allocate memory:

    ...
    struct user_sgmap* usg;
    usg = kmalloc(actual_fibsize - sizeof(struct aac_srb)
    + sizeof(struct sgmap), GFP_KERNEL);

    and then neglect to free it:

    ...
    for (i = 0; i < usg->count; i++) {
    u64 addr;
    void* p;
    if (usg->sg[i].count >
    ((dev->adapter_info.options &
    AAC_OPT_NEW_COMM) ?
    (dev->scsi_host_ptr->max_sectors << 9) :
    65536)) {
    rcode = -EINVAL;
    goto cleanup;
    ... this 'goto' makes 'usg' go out of scope and leak the memory we
    allocated.

    Other exits properly kfree(usg), it's just here it is neglected.

    Signed-off-by: Jesper Juhl
    Cc: James Bottomley
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jesper Juhl
     

11 Nov, 2011

1 commit

  • Aacraid controller can hang on some nodes if kernel uses non-default
    (powersave) ASPM policy. Controller hangs shortly after successful load and
    hardware detection. Scsi error handler detects this hang and tries to restart
    hardware but it does not help.

    Initially it was noticed on RHEL6-based openVZ kernel after backporting
    aacraid driver from mainline (RHEL6 kernel with original driver works well)
    http://bugzilla.openvz.org/show_bug.cgi?id=2043

    This issue happens because default ASPM policy was changed in Red Hat
    kernels. Therefore guys from Red Hat have noticed this problem long time ago:
    on Fedora 12
    https://bugzilla.redhat.com/show_bug.cgi?id=540478
    on Fedora 14
    https://bugzilla.redhat.com/show_bug.cgi?id=679385

    In RHEL6 kernel this issue was fixed, ASPM was disabled in aacraid driver. In
    kernel changelog I've found that seems it was done by Matthew Garrett: -
    [scsi] aacraid: Disable ASPM by default (Matthew Garrett) [599735]

    However seems this patch was not submitted to mainline. I've reproduced this
    issue on vanilla 3.1.0 kernel booted with "pcie_aspm.policy=powersave" option,
    So I believe it makes sense to do it now.

    Signed-off-by: Vasily Averin
    [mjg: Checking the Windows drivers indicates that they disable ASPM under all
    circumstances, so:]
    Acked-by: Matthew Garrett
    Acked-by: Achim Leubner
    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    Vasily Averin
     

01 Nov, 2011

1 commit


29 Oct, 2011

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (204 commits)
    [SCSI] qla4xxx: export address/port of connection (fix udev disk names)
    [SCSI] ipr: Fix BUG on adapter dump timeout
    [SCSI] megaraid_sas: Fix instance access in megasas_reset_timer
    [SCSI] hpsa: change confusing message to be more clear
    [SCSI] iscsi class: fix vlan configuration
    [SCSI] qla4xxx: fix data alignment and use nl helpers
    [SCSI] iscsi class: fix link local mispelling
    [SCSI] iscsi class: Replace iscsi_get_next_target_id with IDA
    [SCSI] aacraid: use lower snprintf() limit
    [SCSI] lpfc 8.3.27: Change driver version to 8.3.27
    [SCSI] lpfc 8.3.27: T10 additions for SLI4
    [SCSI] lpfc 8.3.27: Fix queue allocation failure recovery
    [SCSI] lpfc 8.3.27: Change algorithm for getting physical port name
    [SCSI] lpfc 8.3.27: Changed worst case mailbox timeout
    [SCSI] lpfc 8.3.27: Miscellanous logic and interface fixes
    [SCSI] megaraid_sas: Changelog and version update
    [SCSI] megaraid_sas: Add driver workaround for PERC5/1068 kdump kernel panic
    [SCSI] megaraid_sas: Add multiple MSI-X vector/multiple reply queue support
    [SCSI] megaraid_sas: Add support for MegaRAID 9360/9380 12GB/s controllers
    [SCSI] megaraid_sas: Clear FUSION_IN_RESET before enabling interrupts
    ...

    Linus Torvalds
     

25 Oct, 2011

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (59 commits)
    MAINTAINERS: linux-m32r is moderated for non-subscribers
    linux@lists.openrisc.net is moderated for non-subscribers
    Drop default from "DM365 codec select" choice
    parisc: Kconfig: cleanup Kernel page size default
    Kconfig: remove redundant CONFIG_ prefix on two symbols
    cris: remove arch/cris/arch-v32/lib/nand_init.S
    microblaze: add missing CONFIG_ prefixes
    h8300: drop puzzling Kconfig dependencies
    MAINTAINERS: microblaze-uclinux@itee.uq.edu.au is moderated for non-subscribers
    tty: drop superfluous dependency in Kconfig
    ARM: mxc: fix Kconfig typo 'i.MX51'
    Fix file references in Kconfig files
    aic7xxx: fix Kconfig references to READMEs
    Fix file references in drivers/ide/
    thinkpad_acpi: Fix printk typo 'bluestooth'
    bcmring: drop commented out line in Kconfig
    btmrvl_sdio: fix typo 'btmrvl_sdio_sd6888'
    doc: raw1394: Trivial typo fix
    CIFS: Don't free volume_info->UNC until we are entirely done with it.
    treewide: Correct spelling of successfully in comments
    ...

    Linus Torvalds
     

20 Oct, 2011

1 commit

  • This is just a cleanup, to silence static checker warnings. It
    doesn't change how the code works.

    buf[] can either be BUF_SIZE if this is called from sysfs, or it can
    be 16 if it's called from aac_get_adapter_info() via
    aac_get_serial_number(). We use the smaller limit here.

    sizeof(dev->supplement_adapter_info.MfgPcbaSerialNo) is 12 so there
    is actually no chance of hitting either limit.

    Signed-off-by: Dan Carpenter
    Acked-by: Achim Leubner
    Signed-off-by: James Bottomley

    Dan Carpenter
     

22 Sep, 2011

1 commit

  • scsi reset on hardware with enabled MSI interrupts generates WARNING message

    [11027.798722] aacraid: Host adapter abort request (0,0,0,0)
    [11027.798814] aacraid: Host adapter reset request. SCSI hang ?
    [11087.762237] aacraid: SCSI bus appears hung
    [11135.082543] ------------[ cut here ]------------
    [11135.082646] WARNING: at drivers/pci/msi.c:658 pci_enable_msi_block+0x251/0x290()

    Signed-off-by: Vasily Averin
    Acked-by: Mark Salyzyn
    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    Vasily Averin
     

15 Sep, 2011

1 commit


27 May, 2011

1 commit

  • * 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:
    gfs2: Drop __TIME__ usage
    isdn/diva: Drop __TIME__ usage
    atm: Drop __TIME__ usage
    dlm: Drop __TIME__ usage
    wan/pc300: Drop __TIME__ usage
    parport: Drop __TIME__ usage
    hdlcdrv: Drop __TIME__ usage
    baycom: Drop __TIME__ usage
    pmcraid: Drop __DATE__ usage
    edac: Drop __DATE__ usage
    rio: Drop __DATE__ usage
    scsi/wd33c93: Drop __TIME__ usage
    scsi/in2000: Drop __TIME__ usage
    aacraid: Drop __TIME__ usage
    media/cx231xx: Drop __TIME__ usage
    media/radio-maxiradio: Drop __TIME__ usage
    nozomi: Drop __TIME__ usage
    cyclades: Drop __TIME__ usage

    Linus Torvalds
     

19 Apr, 2011

1 commit

  • The kernel already prints its build timestamp during boot, no need to
    repeat it in random drivers and produce different object files each
    time.

    Cc: Adaptec OEM Raid Solutions
    Cc: linux-scsi@vger.kernel.org
    Signed-off-by: Michal Marek

    Michal Marek
     

31 Mar, 2011

1 commit


24 Mar, 2011

1 commit

  • Added new hardware device 0x28b interface for PMC-Sierra's SRC based
    controller family.

    - new src.c file for 0x28b specific functions
    - new XPORT header required
    - sync. command interface: doorbell bits shifted (SRC_ODR_SHIFT, SRC_IDR_SHIFT)
    - async. Interface: different inbound queue handling, no outbound I2O
    queue available, using doorbell ("PmDoorBellResponseSent") and
    response buffer on the host ("host_rrq") for status
    - changed AIF (adapter initiated FIBs) interface: "DoorBellAifPending"
    bit to inform about pending AIF, "AifRequest" command to read AIF,
    "NoMoreAifDataAvailable" to mark the end of the AIFs

    Signed-off-by: Mahesh Rajashekhara
    Signed-off-by: James Bottomley

    Mahesh Rajashekhara
     

17 Mar, 2011

1 commit


23 Dec, 2010

1 commit


17 Nov, 2010

1 commit

  • Move the mid-layer's ->queuecommand() invocation from being locked
    with the host lock to being unlocked to facilitate speeding up the
    critical path for drivers who don't need this lock taken anyway.

    The patch below presents a simple SCSI host lock push-down as an
    equivalent transformation. No locking or other behavior should change
    with this patch. All existing bugs and locking orders are preserved.

    Additionally, add one parameter to queuecommand,
    struct Scsi_Host *
    and remove one parameter from queuecommand,
    void (*done)(struct scsi_cmnd *)

    Scsi_Host* is a convenient pointer that most host drivers need anyway,
    and 'done' is redundant to struct scsi_cmnd->scsi_done.

    Minimal code disturbance was attempted with this change. Most drivers
    needed only two one-line modifications for their host lock push-down.

    Signed-off-by: Jeff Garzik
    Acked-by: James Bottomley
    Signed-off-by: Linus Torvalds

    Jeff Garzik
     

02 Nov, 2010

1 commit

  • "gadget", "through", "command", "maintain", "maintain", "controller", "address",
    "between", "initiali[zs]e", "instead", "function", "select", "already",
    "equal", "access", "management", "hierarchy", "registration", "interest",
    "relative", "memory", "offset", "already",

    Signed-off-by: Uwe Kleine-König
    Signed-off-by: Jiri Kosina

    Uwe Kleine-König
     

25 Oct, 2010

1 commit

  • * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)
    Update broken web addresses in arch directory.
    Update broken web addresses in the kernel.
    Revert "drivers/usb: Remove unnecessary return's from void functions" for musb gadget
    Revert "Fix typo: configuation => configuration" partially
    ida: document IDA_BITMAP_LONGS calculation
    ext2: fix a typo on comment in ext2/inode.c
    drivers/scsi: Remove unnecessary casts of private_data
    drivers/s390: Remove unnecessary casts of private_data
    net/sunrpc/rpc_pipe.c: Remove unnecessary casts of private_data
    drivers/infiniband: Remove unnecessary casts of private_data
    drivers/gpu/drm: Remove unnecessary casts of private_data
    kernel/pm_qos_params.c: Remove unnecessary casts of private_data
    fs/ecryptfs: Remove unnecessary casts of private_data
    fs/seq_file.c: Remove unnecessary casts of private_data
    arm: uengine.c: remove C99 comments
    arm: scoop.c: remove C99 comments
    Fix typo configue => configure in comments
    Fix typo: configuation => configuration
    Fix typo interrest[ing|ed] => interest[ing|ed]
    Fix various typos of valid in comments
    ...

    Fix up trivial conflicts in:
    drivers/char/ipmi/ipmi_si_intf.c
    drivers/usb/gadget/rndis.c
    net/irda/irnet/irnet_ppp.c

    Linus Torvalds
     

23 Oct, 2010

2 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (84 commits)
    [SCSI] be2iscsi: SGE Len == 64K
    [SCSI] be2iscsi: Remove premature free of cid
    [SCSI] be2iscsi: More time for FW
    [SCSI] libsas: fix bug for vacant phy
    [SCSI] sd: Fix overflow with big physical blocks
    [SCSI] st: add MTWEOFI to write filemarks without flushing drive buffer
    [SCSI] libsas: Don't issue commands to devices that have been hot-removed
    [SCSI] megaraid_sas: Add Online Controller Reset to MegaRAID SAS drive
    [SCSI] lpfc 8.3.17: Update lpfc driver version to 8.3.17
    [SCSI] lpfc 8.3.17: Replace function reset methodology
    [SCSI] lpfc 8.3.17: SCSI fixes
    [SCSI] lpfc 8.3.17: BSG fixes
    [SCSI] lpfc 8.3.17: SLI Additions and Fixes
    [SCSI] lpfc 8.3.17: Code Cleanup and Locking fixes
    [SCSI] zfcp: Remove scsi_cmnd->serial_number from debug traces
    [SCSI] ipr: fix array error logging
    [SCSI] aha152x: enable PCMCIA on 64bit
    [SCSI] scsi_dh_alua: Handle all states correctly
    [SCSI] cxgb4i: connection and ddp setting update
    [SCSI] cxgb3i: fixed connection over vlan
    ...

    Linus Torvalds
     
  • * '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
     

15 Oct, 2010

1 commit

  • 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
     

23 Sep, 2010

1 commit


17 Sep, 2010

1 commit


16 Sep, 2010

1 commit

  • All these files use the big kernel lock in a trivial
    way to serialize their private file operations,
    typically resulting from an earlier semi-automatic
    pushdown from VFS.

    None of these drivers appears to want to lock against
    other code, and they all use the BKL as the top-level
    lock in their file operations, meaning that there
    is no lock-order inversion problem.

    Consequently, we can remove the BKL completely,
    replacing it with a per-file mutex in every case.
    Using a scripted approach means we can avoid
    typos.

    file=$1
    name=$2
    if grep -q lock_kernel ${file} ; then
    if grep -q 'include.*linux.mutex.h' ${file} ; then
    sed -i '/include.*/d' ${file}
    else
    sed -i 's/include.*.*$/include /g' ${file}
    fi
    sed -i ${file} \
    -e "/^#include.*linux.mutex.h/,$ {
    1,/^\(static\|int\|long\)/ {
    /^\(static\|int\|long\)/istatic DEFINE_MUTEX(${name}_mutex);

    } }" \
    -e "s/\(un\)*lock_kernel\>[ ]*()/mutex_\1lock(\&${name}_mutex)/g" \
    -e '/[ ]*cycle_kernel_lock();/d'
    else
    sed -i -e '/include.*\/d' ${file} \
    -e '/cycle_kernel_lock()/d'
    fi

    Signed-off-by: Arnd Bergmann
    Cc: linux-scsi@vger.kernel.org
    Cc: "James E.J. Bottomley"

    Arnd Bergmann
     

11 Aug, 2010

1 commit


28 Jul, 2010

1 commit


28 May, 2010

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6:
    [SCSI] fix race in scsi_target_reap
    [SCSI] aacraid: Eliminate use after free
    [SCSI] arcmsr: Support HW reset for EH and polling scheme for scsi device
    [SCSI] bfa: fix system crash when reading sysfs fc_host statistics
    [SCSI] iscsi_tcp: remove sk_sleep check
    [SCSI] ipr: improve interrupt service routine performance
    [SCSI] ipr: set the data list length in the request control block
    [SCSI] ipr: fix a register read to use the correct address for 64 bit adapters
    [SCSI] ipr: include the resource path in the IOA status area structure
    [SCSI] ipr: implement fixes for 64 bit adapter support
    [SCSI] be2iscsi: correct return value in mgmt_invalidate_icds()

    Linus Torvalds
     

25 May, 2010

1 commit

  • The debugging code using the freed structure is moved before the kfree.

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

    //
    @free@
    expression E;
    position p;
    @@
    kfree@p(E)

    @@
    expression free.E, subE

    Signed-off-by: Julia Lawall
    Signed-off-by: James Bottomley

    Julia Lawall
     

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
     

17 May, 2010

6 commits

  • Push down the bkl into ioctl functions on the scsi layer.

    [jkacur: Forward declaration missing ';'.
    Conflicting declaraction in megaraid.h changed
    Fixed missing inodes declarations]

    Signed-off-by: Arnd Bergmann
    Signed-off-by: John Kacur
    Signed-off-by: Frederic Weisbecker

    Arnd Bergmann
     
  • Problem description:
    --------------------

    The problem reported by one of the customer was when a logical array
    is deleted(from the SDK, from the GUI, from arcconf) then the
    corresponding physical device (/dev/sdb, for example) is not removed
    from the Linux namespace. So you end up with a "dead" device
    entry. And some of the linux tools go slightly wonky.

    Solution:
    ---------

    Based on the notification from FW, the driver calls
    "scsi_remove_device" for the DELETED drive. This call not only informs
    the scsi device status to the SCSI mid layer and also it will remove
    corresponding scsi device entries from the Linux sysfs.

    Signed-off-by: Mahesh Rajashekhara
    Signed-off-by: James Bottomley

    Rajashekhara, Mahesh
     
  • Problem description:
    --------------------

    The issue reported by one of the customer was able to read LBA beyond
    the array reported size with "sg_read" utility. If N is the last block
    address reported, then should not be able to read past N,
    i.e. N+1. But in their case, reported last LBA=143134719. So should
    not have been able to read with LBA=143134720, but it is read without
    failure, which means reported size to the OS is not correct and is
    less than the actual last block address.

    Solution:
    ---------

    Firmware layer exposes lesser container capacity than the actual
    one. It exposes [Actual size - Spitfire space(10MB)] to the OS, IO's
    to the 10MB should be prohibited from the Linux driver. Driver checks
    LBA boundary, if its greater than the array reported size then sets
    sensekey to HARDWARE_ERROR and sends the notification to the MID
    layer.

    Signed-off-by: Mahesh Rajashekhara
    Signed-off-by: James Bottomley

    Rajashekhara, Mahesh
     
  • There are two conditions for ATA pass thru command that falls into
    'SRB_STATUS_ERROR' condition.

    1. When the "CC" bit is set by the host in ATA pass-through CDB

    - Even for the successful completion, SCSI target shall generate
    check condition.

    - Driver returns a result code of SAM_STAT_CHECK_CONDITION, with a
    driver byte of DID_OK to the mid layer.

    Below is the snippet of existing code which fills a result code
    of SAM_STAT_CHECK_CONDITION:

    ***********************************
    if (le32_to_cpu(srbreply->scsi_status) == SAM_STAT_CHECK_CONDITION) {
    int len;
    scsicmd->result |= SAM_STAT_CHECK_CONDITION;
    ..........
    ************************************

    2. When the "CC" bit is reset by the host and if SCSI target generates
    a check condition when an error occurs.

    - Driver returns a result code of SAM_STAT_CHECK_CONDITION, with a
    driver byte of DID_ERROR to the mid layer.

    Signed-off-by: Mahesh Rajashekhara
    Signed-off-by: James Bottomley

    Rajashekhara, Mahesh
     
  • The default driver setting is "expose_physicals=0", which means raw
    physical drives are not exposed to OS. If the user wants to expose
    connected physical drives, enable "expose_physicals" module parameter.
    With the new JBOD firmware, physical drives are not available for
    "expose_physicals>0". In function "aac_expose_phy_device", modified
    to reset the appropriate bit in the first byte of inquiry data. This
    fix exposes the connected physical drives.

    Signed-off-by: Mahesh Rajashekhara
    Signed-off-by: James Bottomley

    Rajashekhara, Mahesh
     
  • Problem description:
    --------------------

    When the JBOD is created from the OS using Adaptec Storage Manager
    utility device is not available under FDISK until a system restart is
    done.

    Solution:
    ---------

    AIF handling: If there is a JBOD drive added to the system, identify
    the old one with scsi_device_lookup() and remove it to enable a fresh
    scsi_add_device(); else the new JBOD is not available until reboot.

    Signed-off-by: Mahesh Rajashekhara
    Signed-off-by: James Bottomley

    Rajashekhara, Mahesh
     

30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

18 Jan, 2010

1 commit

  • These particular problems were reported by Cisco and SAP and customers
    as well. Cisco reported on RHEL4 U6 and SAP reported on SLES9 SP4 and
    SLES10 SP2. We added these fixes on RHEL4 U6 and gave a private build
    to IBM and Cisco. Cisco and IBM tested it for more than 15 days and
    they reported that they did not see the issue so far. Before the fix,
    Cisco used to see the issue within 5 days. We generated a patch for
    SLES9 SP4 and SLES10 SP2 and submitted to Novell. Novell applied the
    patch and gave a test build to SAP. SAP tested and reported that the
    build is working properly.

    We also tested in our lab using the tools "dishogsync", which is IO
    stress tool and the tool was provided by Cisco.

    Issue1: File System going into read-only mode

    Root cause: The driver tends to not free the memory (FIB) when the
    management request exits prematurely. The accumulation of such
    un-freed memory causes the driver to fail to allocate anymore memory
    (FIB) and hence return 0x70000 value to the upper layer, which puts
    the file system into read only mode.

    Fix details: The fix makes sure to free the memory (FIB) even if the
    request exits prematurely hence ensuring the driver wouldn't run out
    of memory (FIBs).

    Issue2: False Raid Alert occurs

    When the Physical Drives and Logical drives are reported as deleted or
    added, even though there is no change done on the system

    Root cause: Driver IOCTLs is signaled with EINTR while waiting on
    response from the lower layers. Returning "EINTR" will never initiate
    internal retry.

    Fix details: The issue was fixed by replacing "EINTR" with
    "ERESTARTSYS" for mid-layer retries.

    Signed-off-by: Penchala Narasimha Reddy
    Signed-off-by: James Bottomley

    Penchala Narasimha Reddy Chilakala, ERS-HCLTech
     

10 Dec, 2009

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (42 commits)
    tree-wide: fix misspelling of "definition" in comments
    reiserfs: fix misspelling of "journaled"
    doc: Fix a typo in slub.txt.
    inotify: remove superfluous return code check
    hdlc: spelling fix in find_pvc() comment
    doc: fix regulator docs cut-and-pasteism
    mtd: Fix comment in Kconfig
    doc: Fix IRQ chip docs
    tree-wide: fix assorted typos all over the place
    drivers/ata/libata-sff.c: comment spelling fixes
    fix typos/grammos in Documentation/edac.txt
    sysctl: add missing comments
    fs/debugfs/inode.c: fix comment typos
    sgivwfb: Make use of ARRAY_SIZE.
    sky2: fix sky2_link_down copy/paste comment error
    tree-wide: fix typos "couter" -> "counter"
    tree-wide: fix typos "offest" -> "offset"
    fix kerneldoc for set_irq_msi()
    spidev: fix double "of of" in comment
    comment typo fix: sybsystem -> subsystem
    ...

    Linus Torvalds
     

05 Dec, 2009

1 commit

  • This patch modifies scsi_host_template->change_queue_depth so that
    it takes an argument indicating why it is being called. This will be
    used so that if a LLD needs to do some extra processing when
    handling queue fulls or later ramp ups, it can do so.

    This is a simple port of the drivers setting a change_queue_depth
    callback. In the patch I just have these LLDs adjust the queue depth
    if the user was requesting it.

    Signed-off-by: Mike Christie

    [Vasu.Dev: v2
    Also converted pmcraid_change_queue_depth and then verified
    all modules compile using "make allmodconfig" for any new build
    warnings on X86_64.

    Updated original description after combing two original
    patches from Mike to make this patch git bisectable.]
    Signed-off-by: Vasu Dev
    [jejb: fixed up 53c700]
    Signed-off-by: James Bottomley

    Mike Christie
     

04 Dec, 2009

1 commit

  • That is "success", "unknown", "through", "performance", "[re|un]mapping"
    , "access", "default", "reasonable", "[con]currently", "temperature"
    , "channel", "[un]used", "application", "example","hierarchy", "therefore"
    , "[over|under]flow", "contiguous", "threshold", "enough" and others.

    Signed-off-by: André Goddard Rosa
    Signed-off-by: Jiri Kosina

    André Goddard Rosa
     

14 Apr, 2009

1 commit

  • This is the second go through of the old DMA_nBIT_MASK macro,and there're not
    so many of them left,so I put them into one patch.I hope this is the last round.
    After this the definition of the old DMA_nBIT_MASK macro could be removed.

    Signed-off-by: Yang Hongyang
    Cc: Russell King
    Cc: Tony Lindgren
    Cc: "David S. Miller"
    Cc: James Bottomley
    Cc: Greg KH
    Cc: Takashi Iwai
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yang Hongyang