19 Aug, 2009

11 commits

  • According to the POSIX (1003.1-2008), the file descriptor shall have been
    opened with read permission, regardless of the protection options specified to
    mmap(). The ltp test cases mmap06/07 need this.

    Signed-off-by: Graff Yang
    Acked-by: Paul Mundt
    Signed-off-by: David Howells
    Acked-by: Greg Ungerer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Graff Yang
     
  • Since the changes to the bitbang driver, there is the possibility we will
    be called with either the speed_hz or bpw values zero. We take these to
    mean that the default values (8 bits per word, or maximum bus speed).

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

    Ben Dooks
     
  • Currently the clock rate calculation may round as pleased, which means
    that it is possible that we will round down and end up with a faster clock
    rate than intended.

    Change the calculation to use DIV_ROUND_UP() to ensure that we end up with
    a clock rate either the same as or lower than the user requested one.

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

    Ben Dooks
     
  • There are a number of individual MMC drivers listed in MAINTAINERS. I
    didn't modify those records. Perhaps I should have.

    Cc:
    Cc: Manuel Lauss
    Cc: Nicolas Pitre
    Cc: Pierre Ossman
    Cc: Pavel Pisa
    Cc: Jarkko Lavinen
    Cc: Ben Dooks
    Cc: Sascha Sommer
    Cc: Ian Molton
    Cc: Joseph Chan
    Cc: Harald Welte
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • The commit 2ff05b2b (oom: move oom_adj value) moveed the oom_adj value to
    the mm_struct. It was a very good first step for sanitize OOM.

    However Paul Menage reported the commit makes regression to his job
    scheduler. Current OOM logic can kill OOM_DISABLED process.

    Why? His program has the code of similar to the following.

    ...
    set_oom_adj(OOM_DISABLE); /* The job scheduler never killed by oom */
    ...
    if (vfork() == 0) {
    set_oom_adj(0); /* Invoked child can be killed */
    execve("foo-bar-cmd");
    }
    ....

    vfork() parent and child are shared the same mm_struct. then above
    set_oom_adj(0) doesn't only change oom_adj for vfork() child, it's also
    change oom_adj for vfork() parent. Then, vfork() parent (job scheduler)
    lost OOM immune and it was killed.

    Actually, fork-setting-exec idiom is very frequently used in userland program.
    We must not break this assumption.

    Then, this patch revert commit 2ff05b2b and related commit.

    Reverted commit list
    ---------------------
    - commit 2ff05b2b4e (oom: move oom_adj value from task_struct to mm_struct)
    - commit 4d8b9135c3 (oom: avoid unnecessary mm locking and scanning for OOM_DISABLE)
    - commit 8123681022 (oom: only oom kill exiting tasks with attached memory)
    - commit 933b787b57 (mm: copy over oom_adj value at fork time)

    Signed-off-by: KOSAKI Motohiro
    Cc: Paul Menage
    Cc: David Rientjes
    Cc: KAMEZAWA Hiroyuki
    Cc: Rik van Riel
    Cc: Linus Torvalds
    Cc: Oleg Nesterov
    Cc: Nick Piggin
    Cc: Mel Gorman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KOSAKI Motohiro
     
  • get_sb_pseudo sets s_maxbytes to ~0ULL which becomes negative when cast
    to a signed value. Fix it to use MAX_LFS_FILESIZE which casts properly
    to a positive signed value.

    Signed-off-by: Jeff Layton
    Reviewed-by: Johannes Weiner
    Acked-by: Steve French
    Reviewed-by: Christoph Hellwig
    Cc: Al Viro
    Cc: Robert Love
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Layton
     
  • Signed-off-by: Joe Perches
    Acked-by: Benny Halevy
    Cc: Boaz Harrosh
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • …git/tip/linux-2.6-tip

    * 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    genirq: Wake up irq thread after action has been installed

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (60 commits)
    net: restore gnet_stats_basic to previous definition
    NETROM: Fix use of static buffer
    e1000e: fix use of pci_enable_pcie_error_reporting
    e1000e: WoL does not work on 82577/82578 with manageability enabled
    cnic: Fix locking in init/exit calls.
    cnic: Fix locking in start/stop calls.
    bnx2: Use mutex on slow path cnic calls.
    cnic: Refine registration with bnx2.
    cnic: Fix symbol_put_addr() panic on ia64.
    gre: Fix MTU calculation for bound GRE tunnels
    pegasus: Add new device ID.
    drivers/net: fixed drivers that support netpoll use ndo_start_xmit()
    via-velocity: Fix test of mii_status bit VELOCITY_DUPLEX_FULL
    rt2x00: fix memory corruption in rf cache, add a sanity check
    ixgbe: Fix receive on real device when VLANs are configured
    ixgbe: Do not return 0 in ixgbe_fcoe_ddp() upon FCP_RSP in DDP completion
    netxen: free napi resources during detach
    netxen: remove netxen workqueue
    ixgbe: fix issues setting rx-usecs with legacy interrupts
    can: fix oops caused by wrong rtnl newlink usage
    ...

    Linus Torvalds
     
  • * 'sh/for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6:
    sh: sh7724 ddr self-refresh changes
    sh: use in-soc KEYSC on se7724
    sh: CMT suspend/resume
    sh: skip disabled LCDC channels

    Linus Torvalds
     
  • * 'for-linus' of git://neil.brown.name/md:
    Fix new incorrect error return from do_md_stop.

    Linus Torvalds
     

18 Aug, 2009

12 commits

  • The wake_up_process() of the new irq thread in __setup_irq() is too
    early as the irqaction is not yet fully initialized especially
    action->irq is not yet set. The interrupt thread might dereference the
    wrong irq descriptor.

    Move the wakeup after the action is installed and action->irq has been
    set.

    Reported-by: Michael Buesch
    Signed-off-by: Thomas Gleixner
    Tested-by: Michael Buesch

    Thomas Gleixner
     
  • In 5e140dfc1fe87eae27846f193086724806b33c7d "net: reorder struct Qdisc
    for better SMP performance" the definition of struct gnet_stats_basic
    changed incompatibly, as copies of this struct are shipped to
    userland via netlink.

    Restoring old behavior is not welcome, for performance reason.

    Fix is to use a private structure for kernel, and
    teach gnet_stats_copy_basic() to convert from kernel to user land,
    using legacy structure (struct gnet_stats_basic)

    Based on a report and initial patch from Michael Spang.

    Reported-by: Michael Spang
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • The static variable used by nr_call_to_digi might result in corruption if
    multiple threads are trying to usee a node or neighbour via ioctl. Fixed
    by having the caller pass a structure in. This is safe because nr_add_node
    rsp. nr_add_neigh will allocate a permanent structure, if needed.

    Signed-off-by: Ralf Baechle
    Signed-off-by: David S. Miller

    Ralf Baechle
     
  • Recent commit c8c00a6915a2e3d10416e8bdd3138429beb96210
    changed the exit paths in do_md_stop and was not quite
    careful enough. There is one path were 'err' now needs
    to be cleared but it isn't.
    So setting an array to readonly (with mdadm --readonly) will
    work, but will incorrectly report and error: ENXIO.

    Signed-off-by: NeilBrown

    NeilBrown
     
  • * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
    MIPS: Fix HPAGE_SIZE redefinition

    Linus Torvalds
     
  • * 'for-linus' of git://oss.sgi.com/xfs/xfs:
    xfs: fix locking in xfs_iget_cache_hit

    Linus Torvalds
     
  • …s/security-testing-2.6

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:
    security: define round_hint_to_min in !CONFIG_SECURITY
    Security/SELinux: seperate lsm specific mmap_min_addr
    SELinux: call cap_file_mmap in selinux_file_mmap
    Capabilities: move cap_file_mmap to commoncap.c

    Linus Torvalds
     
  • The inotify_add_watch man page specifies that inotify_add_watch() will
    return a non-negative integer. However, historically the inotify
    watches started at 1, not at 0.

    Turns out that the inotifywait program provided by the inotify-tools
    package doesn't properly handle a 0 watch descriptor. In 7e790dd5 we
    changed from starting at 1 to starting at 0. This patch starts at 1,
    just like in previous kernels, but also just like in previous kernels
    it's possible for it to wrap back to 0. This preserves the kernel
    functionality exactly like it was before the patch (neither method broke
    the spec)

    Signed-off-by: Eric Paris
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • In f44aebcc the tail drop logic of events with no file backing
    (q_overflow and in_ignored) was reversed so IN_IGNORED events would
    never be tail dropped. This now means that Q_OVERFLOW events are NOT
    tail dropped. The fix is to not tail drop IN_IGNORED, but to tail drop
    Q_OVERFLOW.

    Signed-off-by: Eric Paris
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • inotify decides if private data it passed to get added to an event was
    used by checking list_empty(). But it's possible that the event may
    have been dequeued and the private event removed so it would look empty.

    The fix is to use the return code from fsnotify_add_notify_event rather
    than looking at the list.

    Signed-off-by: Eric Paris
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • * master.kernel.org:/home/rmk/linux-2.6-arm: (37 commits)
    ARM: 5673/1: U300 fix initsection compile warning
    ARM: Fix broken highmem support
    mx31moboard: invert sdhc ro signal sense
    ARM: S3C24XX: Fix clkout mpx error
    ARM: S3C64XX: serial: Fix a typo in Kconfig
    IXP4xx: Fix IO_SPACE_LIMIT for 2.6.31-rc core PCI changes
    OMAP3: RX51: Updated rx51_defconfig
    OMAP2/3: mmc-twl4030: Free up MMC regulators while cleaning up
    OMAP3: RX51: Define TWL4030 USB transceiver in board file
    OMAP3: Overo: Fix smsc911x platform device resource value
    OMAP3: Fix omap3 sram virtual addres overlap vmalloc space after increasing vmalloc size
    OMAP2/3: DMA errata correction
    OMAP: Fix testing of cpu defines for mach-omap1
    OMAP3: Overo: add missing pen-down GPIO definition
    OMAP: GPIO: clear/restore level/edge detect settings on mask/unmask
    OMAP3: PM: Fix wrong sequence in suspend.
    OMAP: PM: CPUfreq: obey min/max settings of policy
    OMAP2/3/4: UART: allow in-order port traversal
    OMAP2/3/4: UART: Allow per-UART disabling wakeup for serial ports
    OMAP3: Fixed crash bug with serial + suspend
    ...

    Linus Torvalds
     
  • This patch fixes warnings like this:
    CC fs/proc/meminfo.o
    In file included from /work/linux/include/linux/mmzone.h:20,
    from /work/linux/include/linux/gfp.h:4,
    from /work/linux/include/linux/mm.h:8,
    from /work/linux/fs/proc/meminfo.c:5:
    /work/linux/arch/mips/include/asm/page.h:36:1: warning: "HPAGE_SIZE" redefined
    In file included from /work/linux/fs/proc/meminfo.c:2:
    /work/linux/include/linux/hugetlb.h:107:1: warning: this is the location of the previous definition

    Signed-off-by: Atsushi Nemoto
    Acked-by: David Daney
    Signed-off-by: Ralf Baechle

    Atsushi Nemoto
     

17 Aug, 2009

5 commits

  • The locking in xfs_iget_cache_hit currently has numerous problems:

    - we clear the reclaim tag without i_flags_lock which protects
    modifications to it
    - we call inode_init_always which can sleep with pag_ici_lock
    held (this is oss.sgi.com BZ #819)
    - we acquire and drop i_flags_lock a lot and thus provide no
    consistency between the various flags we set/clear under it

    This patch fixes all that with a major revamp of the locking in
    the function. The new version acquires i_flags_lock early and
    only drops it once we need to call into inode_init_always or before
    calling xfs_ilock.

    This patch fixes a bug seen in the wild where we race modifying the
    reclaim tag.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Felix Blyakher
    Reviewed-by: Eric Sandeen
    Signed-off-by: Felix Blyakher

    Christoph Hellwig
     
  • Fix the header files to define round_hint_to_min() and to define
    mmap_min_addr_handler() in the !CONFIG_SECURITY case.

    Built and tested with !CONFIG_SECURITY

    Signed-off-by: Eric Paris
    Signed-off-by: James Morris

    Eric Paris
     
  • Currently SELinux enforcement of controls on the ability to map low memory
    is determined by the mmap_min_addr tunable. This patch causes SELinux to
    ignore the tunable and instead use a seperate Kconfig option specific to how
    much space the LSM should protect.

    The tunable will now only control the need for CAP_SYS_RAWIO and SELinux
    permissions will always protect the amount of low memory designated by
    CONFIG_LSM_MMAP_MIN_ADDR.

    This allows users who need to disable the mmap_min_addr controls (usual reason
    being they run WINE as a non-root user) to do so and still have SELinux
    controls preventing confined domains (like a web server) from being able to
    map some area of low memory.

    Signed-off-by: Eric Paris
    Signed-off-by: James Morris

    Eric Paris
     
  • Currently SELinux does not check CAP_SYS_RAWIO in the file_mmap hook. This
    means there is no DAC check on the ability to mmap low addresses in the
    memory space. This function adds the DAC check for CAP_SYS_RAWIO while
    maintaining the selinux check on mmap_zero. This means that processes
    which need to mmap low memory will need CAP_SYS_RAWIO and mmap_zero but will
    NOT need the SELinux sys_rawio capability.

    Signed-off-by: Eric Paris
    Signed-off-by: James Morris

    Eric Paris
     
  • Currently we duplicate the mmap_min_addr test in cap_file_mmap and in
    security_file_mmap if !CONFIG_SECURITY. This patch moves cap_file_mmap
    into commoncap.c and then calls that function directly from
    security_file_mmap ifndef CONFIG_SECURITY like all of the other capability
    checks are done.

    Signed-off-by: Eric Paris
    Acked-by: Serge Hallyn
    Signed-off-by: James Morris

    Eric Paris
     

16 Aug, 2009

9 commits

  • drivers/md/dm-log-userspace-transfer.c:110: warning: format '%lu' expects type 'long unsigned int', but argument 4 has type 'size_t'

    Previously posted and acked, but apparently lost.
    http://lkml.indiana.edu/hypermail/linux/kernel/0906.2/02074.html

    Signed-off-by: Randy Dunlap
    Cc: dm-devel@redhat.com
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • commit 111b9dc5 ("e1000e: add aer support") introduces pcie aer
    support for e1000e, but it is not reasonable to disable it in
    e1000_remove but enable it in e1000_resume. This patch enables aer
    support in e1000_probe.

    Signed-off-by: Xiaotian Feng
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Xiaotian Feng
     
  • With manageability (Intel AMT) enabled via BIOS, PHY wakeup does not get
    configured on newer parts which use PHY wakeup vs. MAC wakeup which causes
    WoL to not work. The driver should configure PHY wakeup whether or not
    manageability is enabled.

    Signed-off-by: Bruce Allan
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Bruce Allan
     
  • The slow path ulp_init and ulp_exit calls to the bnx2i driver
    are sleepable calls and therefore should not be protected using
    rcu_read_lock. Fix it by using mutex and refcount during these
    calls. cnic_unregister_driver() will now wait for the refcount
    to go to zero before completing the call.

    Signed-off-by: Michael Chan
    Reviewed-by: Benjamin Li
    Signed-off-by: David S. Miller

    Michael Chan
     
  • The slow path ulp_start and ulp_stop calls to the bnx2i driver
    are sleepable calls and therefore should not be protected using
    rcu_read_lock. Fix it by using mutex and setting a bit during
    these calls. cnic_unregister_device() will now wait for the bit
    to clear before completing the call.

    Signed-off-by: Michael Chan
    Reviewed-by: Benjamin Li
    Signed-off-by: David S. Miller

    Michael Chan
     
  • The slow path calls to the cnic driver are sleepable calls so we
    cannot use rcu_read_lock(). Use mutex for these slow path calls
    instead.

    Signed-off-by: Michael Chan
    Reviewed-by: Benjamin Li
    Signed-off-by: David S. Miller

    Michael Chan
     
  • Register and unregister with bnx2 during NETDEV_UP and NETDEV_DOWN
    events. This simplifies the sequence of events and allows locking
    fixes in the next patch.

    Signed-off-by: Michael Chan
    Reviewed-by: Benjamin Li
    Signed-off-by: David S. Miller

    Michael Chan
     
  • When the cnic driver tries to grab a symbol from bnx2 when bnx2 is
    running init code, symbol_get() will succeed but symbol_put_addr()
    will hit BUG() a moment later. module_text_address() fails because
    bnx2 is still in init code.

    This is fixed by using symbol_put() instead which does the exact
    opposite of symbol_get().

    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    Michael Chan
     
  • The triggered field of struct poll_wqueues introduced in commit
    5f820f648c92a5ecc771a96b3c29aa6e90013bba ("poll: allow f_op->poll to
    sleep").

    It was first set to 1 in pollwake() (now __pollwake() ), tested and
    later set to 0 in poll_schedule_timeout(), but not initialized before.

    As a result when the process needs to sleep, triggered was likely to be
    non-zero even if pollwake() is not called before the first
    poll_schedule_timeout(), meaning schedule_hrtimeout_range() would not be
    called and an extra loop calling all ->poll() would be done.

    This patch initialize triggered to 0 in poll_initwait() so the ->poll()
    are not called twice before the process goes to sleep when it needs to.

    Signed-off-by: Guillaume Knispel
    Acked-by: Thomas Gleixner
    Acked-by: Tejun Heo
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds

    Guillaume Knispel
     

15 Aug, 2009

3 commits