07 Apr, 2011

1 commit

  • The normal mmap paths all avoid creating a mapping where the pgoff
    inside the mapping could wrap around due to overflow. However, an
    expanding mremap() can take such a non-wrapping mapping and make it
    bigger and cause a wrapping condition.

    Noticed by Robert Swiecki when running a system call fuzzer, where it
    caused a BUG_ON() due to terminally confusing the vma_prio_tree code. A
    vma dumping patch by Hugh then pinpointed the crazy wrapped case.

    Reported-and-tested-by: Robert Swiecki
    Acked-by: Hugh Dickins
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

06 Apr, 2011

20 commits

  • Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block:
    ide: always ensure that blk_delay_queue() is called if we have pending IO
    block: fix request sorting at unplug
    dm: improve block integrity support
    fs: export empty_aops
    ide: ide_requeue_and_plug() reinstate "always plug" behaviour
    blk-throttle: don't call xchg on bool
    ufs: remove unessecary blk_flush_plug
    block: make the flush insertion use the tail of the dispatch list
    block: get rid of elv_insert() interface
    block: dump request state on seeing a corrupted request completion

    Linus Torvalds
     
  • On an error path in inotify_init1 a normal user can trigger a double
    free of struct user. This is a regression introduced by a2ae4cc9a16e
    ("inotify: stop kernel memory leak on file creation failure").

    We fix this by making sure that if a group exists the user reference is
    dropped when the group is cleaned up. We should not explictly drop the
    reference on error and also drop the reference when the group is cleaned
    up.

    The new lifetime rules are that an inotify group lives from
    inotify_new_group to the last fsnotify_put_group. Since the struct user
    and inotify_devs are directly tied to this lifetime they are only
    changed/updated in those two locations. We get rid of all special
    casing of struct user or user->inotify_devs.

    Signed-off-by: Eric Paris
    Cc: stable@kernel.org (2.6.37 and up)
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • Just because we are not requeuing a request does not mean that
    some aren't pending. So always issue a blk_delay_queue() if
    either we are requeueing OR there's pending IO.

    This fixes a boot problem for some IDE boxes.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Comparison function for list_sort() must be anticommutative,
    otherwise it is not sorting in ordinary meaning.

    But fortunately list_sort() always check ((*cmp)(priv, a, b)
    Signed-off-by: Jens Axboe

    Konstantin Khlebnikov
     
  • The current block integrity (DIF/DIX) support in DM is verifying that
    all devices' integrity profiles match during DM device resume (which
    is past the point of no return). To some degree that is unavoidable
    (stacked DM devices force this late checking). But for most DM
    devices (which aren't stacking on other DM devices) the ideal time to
    verify all integrity profiles match is during table load.

    Introduce the notion of an "initialized" integrity profile: a profile
    that was blk_integrity_register()'d with a non-NULL 'blk_integrity'
    template. Add blk_integrity_is_initialized() to allow checking if a
    profile was initialized.

    Update DM integrity support to:
    - check all devices with _initialized_ integrity profiles match
    during table load; uninitialized profiles (e.g. for underlying DM
    device(s) of a stacked DM device) are ignored.
    - disallow a table load that would result in an integrity profile that
    conflicts with a DM device's existing (in-use) integrity profile
    - avoid clearing an existing integrity profile
    - validate all integrity profiles match during resume; but if they
    don't all we can do is report the mismatch (during resume we're past
    the point of no return)

    Signed-off-by: Mike Snitzer
    Cc: Martin K. Petersen
    Signed-off-by: Jens Axboe

    Mike Snitzer
     
  • With the ->sync_page() hook gone, we have a few users that
    add their own static address_space_operations without any
    functions defined.

    fs/inode.c already has an empty_aops that it uses for init
    purposes. Lets export that and use it in the places where
    an otherwise empty aops was defined.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • We see stalls if we don't always ensure that the queue gets run
    again. Even if rq == NULL, we could have other pending requests
    in the queue.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • xchg does not work portably with smaller than 32bit types.

    Signed-off-by: Andreas Schwab
    Signed-off-by: Jens Axboe

    Andreas Schwab
     
  • We already flush the per-process plugging list when context switching,
    so a blk_flush_plug call just before a yield() is not needed.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     
  • It's not a preempt type request, in fact we have to insert it
    behind requests that do specify INSERT_FRONT.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Merge it with __elv_add_request(), it's pretty pointless to
    have a function with only two callers. The main interface
    is elv_add_request()/__elv_add_request().

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Currently we just dump a non-informative 'request botched' message.
    Lets actually try and print something sane to help debug issues
    around this.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • * 'drm-intel-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/keithp/linux-2.6:
    drm/i915/lvds: Remove 0xa0 DDC probe for LVDS
    drm/i915/crt: Remove 0xa0 probe for VGA

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: rpckbd - fix a leak of the IRQ during init failure
    Input: wacom - add support for Lenovo tablet ID (0xE6)
    Input: i8042 - downgrade selftest error message to dbg()
    Input: synaptics - fix crash in synaptics_module_init()
    Input: spear-keyboard - fix inverted condition in interrupt handler
    Input: uinput - allow for 0/0 min/max on absolute axes.
    Input: sparse-keymap - report KEY_UNKNOWN for unknown scan codes
    Input: sparse-keymap - report scancodes with key events
    Input: h3600_ts_input - fix a spelling error
    Input: wacom - report resolution for pen devices
    Input: wacom - constify wacom_features for a new missed Bamboo models

    Linus Torvalds
     
  • * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
    powerpc/pseries: Fix build without CONFIG_HOTPLUG_CPU
    powerpc: Set nr_cpu_ids early and use it to free PACAs
    powerpc/pseries: Don't register global initcall
    powerpc/kexec: Fix mismatched ifdefs for PPC64/SMP.
    edac/mpc85xx: Limit setting/clearing of HID1[RFXE] to e500v1/v2 cores
    powerpc/85xx: Update dts for PCIe memory maps to match u-boot of Px020RDB

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:
    Btrfs: don't warn in btrfs_add_orphan
    Btrfs: fix free space cache when there are pinned extents and clusters V2
    Btrfs: Fix uninitialized root flags for subvolumes
    btrfs: clear __GFP_FS flag in the space cache inode
    Btrfs: fix memory leak in start_transaction()
    Btrfs: fix memory leak in btrfs_ioctl_start_sync()
    Btrfs: fix subvol_sem leak in btrfs_rename()
    Btrfs: Fix oops for defrag with compression turned on
    Btrfs: fix /proc/mounts info.
    Btrfs: fix compiler warning in file.c

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (27 commits)
    ipv6: Don't pass invalid dst_entry pointer to dst_release().
    mlx4: fix kfree on error path in new_steering_entry()
    tcp: len check is unnecessarily devastating, change to WARN_ON
    sctp: malloc enough room for asconf-ack chunk
    sctp: fix auth_hmacs field's length of struct sctp_cookie
    net: Fix dev dev_ethtool_get_rx_csum() for forced NETIF_F_RXCSUM
    usbnet: use eth%d name for known ethernet devices
    starfire: clean up dma_addr_t size test
    iwlegacy: fix bugs in change_interface
    carl9170: Fix tx aggregation problems with some clients
    iwl3945: disable hw scan by default
    wireless: rt2x00: rt2800usb.c add and identify ids
    iwl3945: do not deprecate software scan
    mac80211: fix aggregation frame release during timeout
    cfg80211: fix BSS double-unlinking (continued)
    cfg80211:: fix possible NULL pointer dereference
    mac80211: fix possible NULL pointer dereference
    mac80211: fix NULL pointer dereference in ieee80211_key_alloc()
    ath9k: fix a chip wakeup related crash in ath9k_start
    mac80211: fix a crash in minstrel_ht in HT mode with no supported MCS rates
    ...

    Linus Torvalds
     
  • This is a revert of 428d2e828c0a68206e5158a42451487601dc9194.

    This is broken in the same manner as for VGA: trying to write to an
    invalid address on the (currently 7-bit) i2c bus.

    One notable failure appears to be for MacBooks. The scary part was that
    it gave the appearance of working (i.e. reporting the absence of the
    panel) on various all-in-one machines with ghost LVDS panels and not
    failing for laptops.

    Signed-off-by: Chris Wilson
    Acked-by: Dave Airlie
    Signed-off-by: Keith Packard

    Chris Wilson
     
  • This is a moral revert of 6ec3d0c0e9c0c605696e91048eebaca7b0c36695.

    Following the fix to reset the GMBUS controller after a NAK, we finally
    utilize the 0xa0 probe for a CRT connection. And discover that the code
    is broken. Shock.

    There are a number of issues, but following a key insight from Dave
    Airlie, that 0xA0 is an invalid address on a 7-bit bus (though not if we
    were to enable 10-bit addressing), and would look like the EDID port
    0x50, it is possible to see where the confusion starts.

    In short, a write to 0xA0 is accepted by the GMBUS controller which we
    interpreted as meaning the existence of a connection (a slave on the
    other end of the wire ACKing the write). That was false.

    During testing with a broken GMBUS implementation, which never reset an
    earlier NAK, this test always reported a NAK and so we proceeded on to
    the next test.

    Reported-and-tested-by: Sitsofe Wheeler
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=35904
    Reported-and-tested-by: Riccardo Magliocchetti
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=32612
    Signed-off-by: Chris Wilson
    Acked-by: Dave Airlie
    Signed-off-by: Keith Packard

    Chris Wilson
     

05 Apr, 2011

19 commits

  • Signed-off-by: Matt Evans
    Signed-off-by: Benjamin Herrenschmidt

    Matt Evans
     
  • Without this, "holes" in the CPU numbering can cause us to
    free too many PACAs

    Signed-off-by: Benjamin Herrenschmidt

    Ryan Grimm
     
  • Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt
     
  • Commit b3df895aebe091b1657 "powerpc/kexec: Add support for FSL-BookE"
    introduced the original PPC_STD_MMU_64 checks around the function
    crash_kexec_wait_realmode(). Then commit c2be05481f61252
    "powerpc: Fix default_machine_crash_shutdown #ifdef botch" changed
    the ifdef around the calling site to add a check on SMP, but the
    ifdef around the function itself was left unchanged, leaving an
    unused function for PPC_STD_MMU_64=y and SMP=n

    Rather than have two ifdefs that can get out of sync like this,
    simply put the corrected conditional around the function and use
    a stub to get rid of one set of ifdefs completely.

    Signed-off-by: Paul Gortmaker
    Signed-off-by: Benjamin Herrenschmidt

    Paul Gortmaker
     
  • Benjamin Herrenschmidt
     
  • When I moved the orphan adding to btrfs_truncate I missed the fact that during
    orphan cleanup we just add the orphan items to the orphan list without going
    through btrfs_orphan_add, which results in lots of warnings on mount if you have
    any orphan items that need to be truncated. Just remove this warning since it's
    ok, this will allow all of the normal space accounting take place. Thanks,

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • I noticed a huge problem with the free space cache that was presenting
    as an early ENOSPC. Turns out when writing the free space cache out I
    forgot to take into account pinned extents and more importantly
    clusters. This would result in us leaking free space everytime we
    unmounted the filesystem and remounted it.

    I fix this by making sure to check and see if the current block group
    has a cluster and writing out any entries that are in the cluster to the
    cache, as well as writing any pinned extents we currently have to the
    cache since those will be available for us to use the next time the fs
    mounts.

    This patch also adds a check to the end of load_free_space_cache to make
    sure we got the right amount of free space cache, and if not make sure
    to clear the cache and re-cache the old fashioned way.

    Signed-off-by: Josef Bacik
    Signed-off-by: Chris Mason

    Josef Bacik
     
  • root_item->flags and root_item->byte_limit are not initialized when
    a subvolume is created. This bug is not revealed until we added
    readonly snapshot support - now you mount a btrfs filesystem and you
    may find the subvolumes in it are readonly.

    To work around this problem, we steal a bit from root_item->inode_item->flags,
    and use it to indicate if those fields have been properly initialized.
    When we read a tree root from disk, we check if the bit is set, and if
    not we'll set the flag and initialize the two fields of the root item.

    Reported-by: Andreas Philipp
    Signed-off-by: Li Zefan
    Tested-by: Andreas Philipp
    cc: stable@kernel.org
    Signed-off-by: Chris Mason

    Li Zefan
     
  • the object id of the space cache inode's key is allocated from the relative
    root, just like the regular file. So we can't identify space cache inode by
    checking the object id of the inode's key, and we have to clear __GFP_FS flag
    at the time we look up the space cache inode.

    Signed-off-by: Miao Xie
    Signed-off-by: Liu Bo
    Signed-off-by: Chris Mason

    Miao Xie
     
  • Free btrfs_trans_handle when join_transaction() fails
    in start_transaction()

    Signed-off-by: Yoshinori Sano
    Signed-off-by: Chris Mason

    Yoshinori Sano
     
  • Call btrfs_end_transaction() if btrfs_commit_transaction_async() fails.

    Signed-off-by: Tsutomu Itoh
    Signed-off-by: Chris Mason

    Tsutomu Itoh
     
  • btrfs_rename() does not release the subvol_sem if the transaction failed to start.

    Signed-off-by: Johann Lombardi
    Signed-off-by: Chris Mason

    Johann Lombardi
     
  • When we defrag a file, whose size can be fit into an inline extent,
    with compression enabled, the compress type is set to be
    fs_info->compress_type, which is 0 if the btrfs filesystem is mounted
    without compress option. This leads to oops.

    Reported-by: Daniel Blueman
    Signed-off-by: Li Zefan
    Signed-off-by: Chris Mason

    Li Zefan
     
  • Some mount options are not displayed by /proc/mounts.
    This patch displays the option such as compress_type by /proc/mounts.

    Ex.
    [before]
    $ mount | grep sdc2
    /dev/sdc2 on /test12 type btrfs (rw,space_cache,compress=lzo)
    $ cat /proc/mounts | grep sdc2
    /dev/sdc2 /test12 btrfs rw,relatime,compress 0 0

    [after]
    $ mount | grep sdc2
    /dev/sdc2 on /test12 type btrfs (rw,space_cache,compress=lzo)
    $ cat /proc/mounts | grep sdc2
    /dev/sdc2 /test12 btrfs rw,relatime,compress=lzo,space_cache 0 0

    Signed-off-by: Tsutomu Itoh
    Signed-off-by: Chris Mason

    Tsutomu Itoh
     
  • While compiling Btrfs, I got following messages:

    CC [M] fs/btrfs/file.o
    fs/btrfs/file.c: In function '__btrfs_buffered_write':
    fs/btrfs/file.c:909: warning: 'ret' may be used uninitialized in this function
    CC [M] fs/btrfs/tree-defrag.o

    This patch fixes compiler warning.

    Signed-off-by: Tsutomu Itoh
    Signed-off-by: Chris Mason

    Tsutomu Itoh
     
  • * 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
    drm: fix "persistant" typo
    drm/radeon/kms: add some new ontario pci ids
    drm/radeon/kms: pageflipping cleanup for avivo+
    drm/radeon/kms: Add support for tv-out dongle on G5 9600
    drm: export drm_find_cea_extension to drivers
    drm/radeon/kms: add some sanity checks to obj info record parsingi (v2)
    drm/i915: Reset GMBUS controller after NAK
    drm/i915: Busy-spin wait_for condition in atomic contexts
    drm/i915/lvds: Always return connected in the absence of better information

    Linus Torvalds
     
  • * 'next' of git://git.monstr.eu/linux-2.6-microblaze:
    microblaze: Fix ftrace
    microblaze: Wire up new syscalls
    microblaze: Fix level/edge irq sensibility

    Linus Torvalds
     
  • Update suitable words to explain / understand cgroups contents.

    Signed-off-by: Geunsik Lim
    Cc: Paul Menage
    Signed-off-by: Randy Dunlap
    Signed-off-by: Linus Torvalds

    Geunsik Lim
     
  • leds: move leds-class documentation under the leds/ subdir.
    Add also a leds/00-INDEX file describing the files under leds/

    Signed-off-by: Antonio Ospite
    Acked-by: Richard Purdie
    Cc: Andrew Morton
    Signed-off-by: Randy Dunlap
    Signed-off-by: Linus Torvalds

    Antonio Ospite