30 Nov, 2007

29 commits

  • An unprivileged process must be able to kill a setuid root program started
    by the same user. This is legacy behavior needed for instance for xinit to
    kill X when the window manager exits.

    When an unprivileged user runs a setuid root program in !SECURE_NOROOT
    mode, fP, fI, and fE are set full on, so pP' and pE' are full on. Then
    cap_task_kill() prevents the user from signaling the setuid root task.
    This is a change in behavior compared to when
    !CONFIG_SECURITY_FILE_CAPABILITIES.

    This patch introduces a special check into cap_task_kill() just to check
    whether a non-root user is signaling a setuid root program started by the
    same user. If so, then signal is allowed.

    Signed-off-by: Serge E. Hallyn
    Cc: Andrew Morgan
    Cc: Stephen Smalley
    Cc: Chris Wright
    Cc: James Morris
    Cc: Casey Schaufler
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Serge E. Hallyn
     
  • As Herbert Xu pointed out, bytes (chars) with bit 7 (0x80) set are true
    with isprint() but they may not be isascii() but be Unicode instead, so
    don't try to print them in hex dumps.

    Signed-off-by: Randy Dunlap
    Cc: Herbert Xu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • In commit a686cd898bd999fd026a51e90fb0a3410d258ddb:

    "Val's cross-port of the ext3 reservations code into ext2."

    include/linux/ext2_fs.h got a new function whose return value is only
    defined if __KERNEL__ is defined. Putting #ifdef __KERNEL__ around the
    function seems to help, patch below.

    Signed-off-by: Eric Sandeen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tobias Poschwatta
     
  • - fix lockup when switching from early console to real console
    - make sysrq reliable
    - fix panic, if sysrq is issued before console is opened

    Signed-off-by: Thomas Bogendoerfer
    Acked-by: Ralf Baechle
    Cc: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Bogendoerfer
     
  • This patch corrects recently changed (and now invalid) Kconfig descriptions
    for the DMA engine framework:

    - Non-Intel(R) hardware also has DMA engines;
    - DMA is used for more than memcpy and RAID offloading.

    In fact, on most platforms memcpy and RAID aren't factors, and DMA
    exists so that peripherals can transfer data to/from memory while
    the CPU does other work.

    Signed-off-by: Haavard Skinnemoen
    Signed-off-by: David Brownell
    Signed-off-by: Dan Williams
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Haavard Skinnemoen
     
  • This patch adds an additional loop, that delays turning off the DMA
    until the LCDC core has been turned off. This prevents the picture
    to be shifted some random length when the kernel re-initializes
    the LCDC.

    Without this patch, the LCDC keeps running for some small time after the
    PWRCON:LCD_PWR has been cleared ; the FIFO suffers an underrun and on
    re-starting the LCDC the FIFO data stays shifted.

    This behavior has been seen and fixed on AT91SAM9261-EK and two custom
    AT91SAM9261 boards, all of them having different LCD panels.

    Thanks a lot to Anti Sullin for submitting this patch (long
    time ago).

    Signed-off-by: Anti Sullin
    Signed-off-by: Andrew Victor
    Signed-off-by: Nicolas Ferre
    Acked-by: Haavard Skinnemoen
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anti Sullin
     
  • People discuss how the namespaces are working/going-to-work together.

    Ted Ts'o proposed to create some document that describes what problems user
    may have when he/she creates some new namespace, but keeps others shared.
    I liked this idea, so here's the initial version of such a document with
    the problems I currently have in mind and can describe somewhat audibly -
    the "namespaces compatibility list".

    The Documentation/namespaces/ directory is about to contain more docs about
    the namespaces stuff.

    Thanks to Cedirc for notes and spell checks on the doc, to Daniel for
    additional info about IPC and User namespaces interaction and to Randy, who
    alluded me to using a spell checker before sending the documentation :)

    Signed-off-by: Pavel Emelyanov
    Cc: Randy Dunlap
    Cc: Daniel Lezcano
    Cc: Theodore Tso
    Cc: Cedric Le Goater
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pavel Emelyanov
     
  • Commit 7d69a1f4a72b18876c99c697692b78339d491568 ("remove CONFIG_UTS_NS
    and CONFIG_IPC_NS") by Cedric Le Goater accidentally removed the code
    that prevented the uts->hostname and uts->domainname values from being
    overwritten from another namespace.

    In other words, setting hostname/domainname via sysfs (echo xxx >
    /proc/sys/kernel/(host|domain)name) cased the new value to be set in
    init UTS namespace only.

    Return the isolation back.

    Signed-off-by: Pavel Emelyanov
    Acked-by: Cedric Le Goater
    Acked-by: Serge Hallyn
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pavel Emelyanov
     
  • Remove errnoeous x character from dev_dbg() call that stops the driver
    compiling under debug.

    Signed-off-by: Ben Dooks
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ben Dooks
     
  • There should be a pci_dev_put when breaking out of a loop that iterates
    over calls to pci_get_device and similar functions.

    This was fixed using the following semantic patch.

    //
    @@
    identifier d;
    type T;
    expression e;
    iterator for_each_pci_dev;
    @@

    T *d;
    ...
    for_each_pci_dev(d)
    {... when != pci_dev_put(d)
    when != e = d
    (
    return d;
    |
    + pci_dev_put(d);
    ? return ...;
    )
    ...}
    //

    Signed-off-by: Julia Lawall
    Cc: Greg KH
    Cc: Bjorn Helgaas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Julia Lawall
     
  • The code in fb_ddc_read() is said to be based on the implementation of the
    radeon driver:
    http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=fc5891c8a3ba284f13994d7bc1f1bfa8283982de

    However, comparing the old radeon driver code with the new fb_ddc code
    reveals some differences. Most notably, the I2C bus lines are held at the
    end of the function, while the original code was releasing them (as the
    comment above correctly says.)

    There are a few other differences, which appear to be responsible for read
    failures on my system. While tracing low-level I2C code in i2c-algo-bit, I
    noticed that the initial attempt to read the EDID always failed. It takes
    one retry for the read to succeed. As we are about to remove this
    automatic retry property from i2c-algo-bit, reading the EDID would really
    fail.

    As a summary, the I2C lines quirk which is supposedly needed to read EDID
    on some older monitors is currently breaking the (first) read on all other
    monitors (and might not even work with older ones - did anyone try since
    October 2006?)

    After applying the patch below, which makes the code in fb_ddc_read()
    really similar to what the radeon driver used to have, the first EDID read
    succeeds again.

    On top of that, as it appears that this code has been broken for one year
    now and nobody seems to have complained, I'm curious if it makes sense to
    keep this quirk in place. It makes the code more complex and slower just
    for the sake of monitors which I guess nobody uses anymore. Can't we just
    get rid of it?

    Signed-off-by: Jean Delvare
    Acked-by: Benjamin Herrenschmidt
    Tested-by: Roger Leigh
    Tested-by: Michael Buesch
    Cc: "Antonino A. Daplas"
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean Delvare
     
  • m68k: zorro7xx needs if !CONFIG_AMIGA_PCMCIA

    Reported by Ingo Juergensmann

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • For reasons unclear to me, glibc's deliberately defeats the
    attempt we make in to include

    For now, change the one instance of __u32 to 'unsigned int' instead
    because it's breaking userspace. We should probably also remove our
    inclusion of , since we don't use it -- but that's not a
    change to make in -rc.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: David Woodhouse
    Cc: Samuel Thibault
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Woodhouse
     
  • The error path in sys_mq_getsetattr() after the call to
    audit_mq_getsetattr() is wrong - the info->lock is not unlocked and the
    struct file *filp is not put.

    Fix them both.

    Signed-off-by: Pavel Emelyanov
    Cc: Pierre Peiffer
    Cc: Nadia Derbey
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pavel Emelyanov
     
  • Allow passing a bus number through the platform data for the S3C2410 SPI
    GPIO driver. This is needed to support multiple SPI busses.

    Signed-off-by: Ben Dooks
    Signed-off-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • If we specify an GPIO which cannot be used for the purpose, then assume
    that the GPIO is not to be used and do not try and configure it. This can
    be the case where the SPI bus is TX only.

    Signed-off-by: Ben Dooks
    Signed-off-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ben Dooks
     
  • Signed-off-by: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Cox
     
  • During the initialization of the TPM TIS driver, the necessary locality has
    to be requested earlier in the init-process. Depending on the used TPM
    chip, this leads to wrong information. For example: Lenovo X61s with Atmel
    TPM:

    tpm_tis 00:0a: 1.2 TPM (device-id 0xFFFF, rev-id 255)

    But correct is:

    tpm_tis 00:0c: 1.2 TPM (device-id 0x3203, rev-id 9)

    This short patch fixes this issue.

    Signed-off-by: Marcel Selhorst
    Cc: Kylene Jo Hall
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Marcel Selhorst
     
  • Oleg noticed that the call of task_pid_nr_ns() in proc_pid_readdir
    is racy with respect to tasks exiting.

    After a bit of examination it also appears that the call itself
    is completely unnecessary.

    So to fix the problem this patch modifies next_tgid() to return
    both a tgid and the task struct in question.

    A structure is introduced to return these values because it is
    slightly cleaner and easier to optimize, and the resulting code
    is a little shorter.

    Signed-off-by: "Eric W. Biederman"
    Cc: Oleg Nesterov
    Cc: Alexey Dobriyan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • wait_task_stopped(WNOWAIT) does task_pid_nr_ns() without tasklist/rcu lock,
    we can read an already freed memory. Use the cached pid_t value.

    Signed-off-by: Oleg Nesterov
    Looks-good-to: Roland McGrath
    Acked-by: Pavel Emelyanov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • proc_kill_inodes() can clear ->i_fop in the middle of vfs_readdir resulting in
    NULL dereference during "file->f_op->readdir(file, buf, filler)".

    The solution is to remove proc_kill_inodes() completely:

    a) we don't have tricky modules implementing their tricky readdir hooks which
    could keeping this revoke from hell.

    b) In a situation when module is gone but PDE still alive, standard
    readdir will return only "." and "..", because pde->next was cleared by
    remove_proc_entry().

    c) the race proc_kill_inode() destined to prevent is not completely
    fixed, just race window made smaller, because vfs_readdir() is run
    without sb_lock held and without file_list_lock held. Effectively,
    ->i_fop is cleared at random moment, which can't fix properly anything.

    BUG: unable to handle kernel NULL pointer dereference at virtual address 00000018
    printing eip: c1061205 *pdpt = 0000000005b22001 *pde = 0000000000000000
    Oops: 0000 [#1] PREEMPT SMP
    Modules linked in: foo af_packet ipv6 cpufreq_ondemand loop serio_raw sr_mod k8temp cdrom hwmon amd_rng
    Pid: 2033, comm: find Not tainted (2.6.24-rc1-b1d08ac064268d0ae2281e98bf5e82627e0f0c56 #2)
    EIP: 0060:[] EFLAGS: 00010246 CPU: 0
    EIP is at vfs_readdir+0x47/0x74
    EAX: c6b6a780 EBX: 00000000 ECX: c1061040 EDX: c5decf94
    ESI: c6b6a780 EDI: fffffffe EBP: c9797c54 ESP: c5decf78
    DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
    Process find (pid: 2033, ti=c5dec000 task=c64bba90 task.ti=c5dec000)
    Stack: c5decf94 c1061040 fffffff7 0805ffbc 00000000 c6b6a780 c1061295 0805ffbc
    00000000 00000400 00000000 00000004 0805ffbc 4588eff4 c5dec000 c10026ba
    00000004 0805ffbc 00000400 0805ffbc 4588eff4 bfdc6c70 000000dc 0000007b
    Call Trace:
    [] filldir64+0x0/0xc5
    [] sys_getdents64+0x63/0xa5
    [] sysenter_past_esp+0x5f/0x85
    =======================
    Code: 49 83 78 18 00 74 43 8d 6b 74 bf fe ff ff ff 89 e8 e8 b8 c0 12 00 f6 83 2c 01 00 00 10 75 22 8b 5e 10 8b 4c 24 04 89 f0 8b 14 24 53 18 f6 46 1a 04 89 c7 75 0b 8b 56 0c 8b 46 08 e8 c8 66 00
    EIP: [] vfs_readdir+0x47/0x74 SS:ESP 0068:c5decf78

    hch: "Nice, getting rid of this is a very good step formwards.
    Unfortunately we have another copy of this junk in
    security/selinux/selinuxfs.c:sel_remove_entries() which would need the
    same treatment."

    Signed-off-by: Alexey Dobriyan
    Acked-by: Christoph Hellwig
    Cc: Al Viro
    Cc: Stephen Smalley
    Cc: James Morris
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • On some systems the number of resources(IO,MEM) returnedy by PNP device is
    greater than the PNP constant, for example motherboard devices. It brings
    that some resources can't be reserved and resource confilicts. This will
    cause PCI resources are assigned wrongly in some systems, and cause hang.
    This is a regression since we deleted ACPI motherboard driver and use PNP
    system driver.

    [akpm@linux-foundation.org: fix text and coding-style a bit]
    Signed-off-by: Li Shaohua
    Signed-off-by: Zhao Yakui
    Cc: Bjorn Helgaas
    Cc: Thomas Renninger
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Zhao Yakui
     
  • _PAGE_PCD maps a page with caching disabled, which is typically used for
    mapping harware registers. Xen never allows it to be set on a mapping, and
    unprivileged guests never need it since they can't see the real underlying
    hardware. However, some uncached mappings are made early when probing the
    (non-existent) APIC, and its OK to mask off the PCD flag in these cases.

    This became necessary because Xen started checking for this bit, rather
    than silently masking it off.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeremy Fitzhardinge
     
  • include/asm-um/arch points to the non-existed include/asm-i386 directory.

    Signed-off-by: WANG Cong
    Cc: Jeff Dike
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    WANG Cong
     
  • Ordinarily the size of a pageblock is determined at compile-time based on the
    hugepage size. On PPC64, the hugepage size is determined at runtime based on
    what is supported by the machine. With legacy machines such as iSeries that
    do not support hugepages, HPAGE_SHIFT is 0. This results in pageblock_order
    being set to -PAGE_SHIFT and a crash results shortly afterwards.

    This patch adds a function to select a sensible value for pageblock order by
    default when HUGETLB_PAGE_SIZE_VARIABLE is set. It checks that HPAGE_SHIFT
    is a sensible value before using the hugepage size; if it is not MAX_ORDER-1
    is used.

    This is a fix for 2.6.24.

    Credit goes to Stephen Rothwell for identifying the bug and testing candidate
    patches. Additional credit goes to Andy Whitcroft for spotting a problem
    with respects to IA-64 before releasing. Additional credit to David Gibson
    for testing with the libhugetlbfs test suite.

    Signed-off-by: Mel Gorman
    Tested-by: Stephen Rothwell
    Cc: Benjamin Herrenschmidt
    Acked-by: Paul Mackerras
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mel Gorman
     
  • - Limit video memory size to avoid crossing a 256 MiB boundary in IOIF space.
    - Pass the actual amount of video memory used to lv1_gpu_memory_allocate().

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • - vuart.ko -> ps3-vuart.ko
    - sys-manager.ko -> ps3-sys-manager.ko

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Make the atmel_spi driver label GPIOs according to the device for which
    they're acting as a chipselect. This way the debugfs dump of gpio state is
    more informative.

    Signed-off-by: David Brownell
    Cc: Haavard Skinnemoen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • This version brings a new terse output mode as well as many improvements to
    the unary detection and bare type regcognition. It also brings the usual
    updates for false positives, though these seem to be slowing markedly
    now that the unary detector is no longer just putting its finger in the
    air and guessing. Of note:

    - new --terse mode producing a single line per report
    - loosening of the block brace checks
    - new checks for enum/union/struch brace placements
    - hugely expanded "bare type" detection
    - checks for inline usage
    - better handling of already open comment blocks
    - handle patches which introduce or remove lines without newlines

    Andy Whitcroft (19):
    Version: 0.12
    style fixes as spotted by checkpatch
    add a --terse options of a single line of output per report
    block brace checks should only apply for single line blocks
    all new bare type detector
    check spacing for open braces with enum, union and struct
    check for LINUX_VERSION_CODE
    macros definition bracketing checks need to ignore -ve context
    clean up the mail-back mode, -q et al
    expand possible type matching to declarations
    allow const and sparse annotations on possible types
    handle possible types as regular types everywhere
    prefer plain inline over __inline__ and __inline
    all new open comment detection
    fix up conditional extraction for if assignment checks
    add const to the possible type matcher
    unary checks: a for loop is a conditional too
    possible types: detect function pointer definitions
    handle missind newlines at end of file, report addition

    Signed-off-by: Andy Whitcroft
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     

29 Nov, 2007

11 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (25 commits)
    USB: s3c2410 gadget: ensure vbus pin in input mode during read
    USB: s3c2410 gadget: allow sharing of vbus irq
    USB: s3c2410 gadget: Header move fixups
    USB: usb-storage: unusual_devs entry for JetFlash TS1GJF2A
    USB: fix up EHCI startup synchronization
    USB: make the microtek driver and HAL cooperate
    USB: uevent environment key fix
    USB: keep track of whether interface sysfs files exist
    USB: sierra: new product id
    USB HCD: avoid duplicate local_irq_disable()
    USB: mailing lists have changed
    USB: remove USB HUB entry from MAINTAINERS
    USB: fix directory references in usb/README
    USB: add support for an older firmware revision for the Nikon D200
    USB: FIx locks and urb->status in adutux (updated)
    USB: power-management documenation update
    USB: Fix signr comment in usbdevice_fs.h
    usbserial: fix inconsistent lock state
    USB: fix usbled disconnect read race #2
    USB: free memory when writing fails in usb/serial/mos7840.c
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6:
    pci hotplug: kernel-doc fixes
    pci-aer: fix kernel-doc mistakes
    PCI: drivers/pci/pci-sysfs.c: Add missing pci_dev_put
    PCI: pcie portdriver: initialize returned value

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6:
    sysfs: fix off-by-one error in fill_read_buffer()
    kobject: two typo fixes
    UIO: add UIO documentation target to DocBook Makefile
    UIO: fix up the UIO documentation
    create /sys/.../power when CONFIG_PM is set
    allow LEGACY_PTYS to be set to 0

    Linus Torvalds
     
  • acpiphp.h: not using kernel-doc, so change /** to /*
    acpiphp_core.c: lots of kernel-doc cleanups
    acpiphp_glue.c: lots of kernel-doc cleanups
    acpiphp_ibm.c: lots of kernel-doc cleanups
    cpqphp_core.c: lots of kernel-doc cleanups
    cpqphp_ctrl.c: lots of kernel-doc cleanups
    fakephp.c: correct kernel-doc notation
    pciehp_ctrl.c: correct kernel-doc notation
    rpadlpar_core.c: correct function names & kernel-doc notation
    rpaphp_core.c: correct kernel-doc notation
    shpchp_ctrl.c: correct kernel-doc notation

    Signed-off-by: Randy Dunlap
    Cc: Kristen Accardi
    Signed-off-by: Greg Kroah-Hartman

    Randy Dunlap
     
  • Fix kernel-doc parameter names and ending block comments (change **/
    to */).

    Signed-off-by: Randy Dunlap
    Acked-by: Linas Vepstas
    Signed-off-by: Greg Kroah-Hartman

    Randy Dunlap
     
  • There should be a pci_dev_put when breaking out of a loop that iterates
    over calls to pci_get_device and similar functions.

    This was fixed using the following semantic patch.

    //
    @@
    identifier d;
    type T;
    expression e;
    iterator for_each_pci_dev;
    @@

    T *d;
    ...
    for_each_pci_dev(d)
    {... when != pci_dev_put(d)
    when != e = d
    (
    return d;
    |
    + pci_dev_put(d);
    ? return ...;
    )
    ...}
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Greg Kroah-Hartman

    Julia Lawall
     
  • The pcie protdrv status can be returned uninitialized,
    if there are no children under a device. This leads to
    bad responses downstream. Fix this.

    Signed-off-by: Linas Vepstas
    Signed-off-by: Greg Kroah-Hartman

    Linas Vepstas
     
  • Some CPUs in the S3C24XX series do not support readback of the
    value of a pin when the pin has been configured to an IRQ.

    Signed-off-by: Ben Dooks
    Acked-by: David Brownell
    Signed-off-by: Greg Kroah-Hartman

    Ben Dooks
     
  • If another driver wants to claim the vbus pin, say
    to notify the user of an connect/disconnect then allow
    the IRQ to be shared by specifiying IRQ_SHARED in the
    flags.

    Signed-off-by: Ben Dooks
    Acked-by: David Brownell
    Signed-off-by: Greg Kroah-Hartman

    Ben Dooks
     
  • Fixup the fallout from the arch moves earlier in the kernel
    series.

    Signed-off-by: Ben Dooks
    Acked-by: David Brownell

    Ben Dooks
     
  • This patch (as1018) adds an unusual_devs entry for the JetFlash
    TS1GJF2A. This device doesn't like read requests for more than 188
    sectors. Setting max_sectors down to 64 is overkill, but at least
    it will work without errors.

    For the torturous debugging history, see this thread:

    http://marc.info/?t=118745764700005&r=1&w=2

    Signed-off-by: Alan Stern
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern