06 Aug, 2008

2 commits

  • proc: fix warnings

    fs/proc/base.c:2429: warning: format '%llu' expects type 'long long unsigned int', but argument 3 has type 'u64'
    fs/proc/base.c:2429: warning: format '%llu' expects type 'long long unsigned int', but argument 4 has type 'u64'
    fs/proc/base.c:2429: warning: format '%llu' expects type 'long long unsigned int', but argument 5 has type 'u64'
    fs/proc/base.c:2429: warning: format '%llu' expects type 'long long unsigned int', but argument 6 has type 'u64'
    fs/proc/base.c:2429: warning: format '%llu' expects type 'long long unsigned int', but argument 7 has type 'u64'
    fs/proc/base.c:2429: warning: format '%llu' expects type 'long long unsigned int', but argument 8 has type 'u64'
    fs/proc/base.c:2429: warning: format '%llu' expects type 'long long unsigned int', but argument 9 has type 'u64'

    Signed-off-by: Alexander Beregalov
    Acked-by: Andrea Righi
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexander Beregalov
     
  • fs/omfs/inode.c:495: warning: format '%llx' expects type 'long long
    unsigned int', but argument 2 has type 'u64'
    fs/omfs/inode.c:495: warning: format '%llx' expects type 'long
    long unsigned int', but argument 3 has type '__be64'

    Signed-off-by: Alexander Beregalov
    Acked-by: Bob Copeland
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexander Beregalov
     

05 Aug, 2008

3 commits

  • Like the page lock change, this also requires name change, so convert the
    raw test_and_set bitop to a trylock.

    Signed-off-by: Nick Piggin
    Signed-off-by: Linus Torvalds

    Nick Piggin
     
  • Converting page lock to new locking bitops requires a change of page flag
    operation naming, so we might as well convert it to something nicer
    (!TestSetPageLocked_Lock => trylock_page, SetPageLocked => set_page_locked).

    This also facilitates lockdeping of page lock.

    Signed-off-by: Nick Piggin
    Acked-by: KOSAKI Motohiro
    Acked-by: Peter Zijlstra
    Acked-by: Andrew Morton
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Linus Torvalds

    Nick Piggin
     
  • This reverts commit f9247273cb69ba101877e946d2d83044409cc8c5 (and
    fb2e405fc1fc8b20d9c78eaa1c7fd5a297efde43 - "fix fs/nfs/nfsroot.c
    compilation" - that fixed a missed conversion).

    The changes cause problems for at least the sparc build. Let's re-do
    them when the exact issues are resolved.

    Requested-by: Andrew Morton
    Requested-by: Steven Whitehouse
    Cc: David Miller
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

04 Aug, 2008

1 commit

  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    ext4: remove write-only variables from ext4_ordered_write_end
    ext4: unexport jbd2_journal_update_superblock
    ext4: Cleanup whitespace and other miscellaneous style issues
    ext4: improve ext4_fill_flex_info() a bit
    ext4: Cleanup the block reservation code path
    ext4: don't assume extents can't cross block groups when truncating
    ext4: Fix lack of credits BUG() when deleting a badly fragmented inode
    ext4: Fix ext4_ext_journal_restart()
    ext4: fix ext4_da_write_begin error path
    jbd2: don't abort if flushing file data failed
    ext4: don't read inode block if the buffer has a write error
    ext4: Don't allow lg prealloc list to be grow large.
    ext4: Convert the usage of NR_CPUS to nr_cpu_ids.
    ext4: Improve error handling in mballoc
    ext4: lock block groups when initializing
    ext4: sync up block and inode bitmap reading functions
    ext4: Allow read/only mounts with corrupted block group checksums
    ext4: Fix data corruption when writing to prealloc area

    Linus Torvalds
     

03 Aug, 2008

2 commits


02 Aug, 2008

3 commits

  • * 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-pull: (64 commits)
    [XFS] Remove vn_revalidate calls in xfs.
    [XFS] Now that xfs_setattr is only used for attributes set from ->setattr
    [XFS] xfs_setattr currently doesn't just handle the attributes set through
    [XFS] fix use after free with external logs or real-time devices
    [XFS] A bug was found in xfs_bmap_add_extent_unwritten_real(). In a
    [XFS] fix compilation without CONFIG_PROC_FS
    [XFS] s/XFS_PURGE_INODE/IRELE/g s/VN_HOLD(XFS_ITOV())/IHOLD()/
    [XFS] fix mount option parsing in remount
    [XFS] Disable queue flag test in barrier check.
    [XFS] streamline init/exit path
    [XFS] Fix up problem when CONFIG_XFS_POSIX_ACL is not set and yet we still
    [XFS] Don't assert if trying to mount with blocksize > pagesize
    [XFS] Don't update mtime on rename source
    [XFS] Allow xfs_bmbt_split() to fallback to the lowspace allocator
    [XFS] Restore the lowspace extent allocator algorithm
    [XFS] use minleft when allocating in xfs_bmbt_split()
    [XFS] attrmulti cleanup
    [XFS] Check for invalid flags in xfs_attrlist_by_handle.
    [XFS] Fix CI lookup in leaf-form directories
    [XFS] Use the generic xattr methods.
    ...

    Linus Torvalds
     
  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2:
    [PATCH] ocfs2: Release mutex in error handling code
    [PATCH] ocfs2: Fix oops when racing files truncates with writes into an mmap region
    [PATCH 2/2] ocfs2: Fix race between mount and recovery
    [PATCH 1/2] ocfs2: Add counter in struct ocfs2_dinode to track journal replays
    [PATCH] configfs: Convenience macros for attribute definition.
    [PATCH] configfs: Pin configfs subsystems separately from new config_items.
    [PATCH] configfs: Fix open directory making rmdir() fail
    [PATCH] configfs: Lock new directory inodes before removing on cleanup after failure
    [PATCH] configfs: Prevent userspace from creating new entries under attaching directories
    [PATCH] configfs: Fix failing symlink() making rmdir() fail
    [PATCH] configfs: Fix symlink() to a removing item
    [PATCH] configfs: Include linux/err.h in linux/configfs.h

    Linus Torvalds
     
  • * git://git.infradead.org/mtd-2.6:
    [MTD] [NAND] drivers/mtd/nand/nandsim.c: fix printk warnings
    [MTD] [NAND] Blackfin NFC Driver: Cleanup the error exit path of bf5xx_nand_probe function
    [MTD] [NAND] Blackfin NFC Driver: use standard dev_err() rather than printk()
    [MTD] [NAND] Blackfin NFC Driver: enable Blackfin nand HWECC support by default
    [MTD] [NAND] Blackfin NFC Driver: add proper devinit/devexit markings to probe/remove functions
    [MTD] [NAND] Blackfin NFC Driver: add support for the ECC layout the Blackfin bootrom uses
    [MTD] [NAND] Blackfin NFC Driver: fix bug - hw ecc calc by making sure we extract 11 bits from each register instead of 10
    [MTD] [NAND] Blackfin NFC Driver: fix bug - do not clobber the status from the first 256 bytes if operating on 512 pages
    [MTD] [NAND] diskonchip.c fix sparse endian warnings
    [MTD] [NAND] drivers/mtd/nand/nandsim.c needs div64.h
    [JFFS2] Fix allocation of summary buffer
    Fix rename of at91_nand -> atmel_nand
    [MTD] [NOR] drivers/mtd/chips/jedec_probe.c: fix Am29DL800BB device ID
    [MTD] MTD_DEBUG always does compile-time typechecks
    [MTD] DataFlash: bugfix, binary page sizes now handled
    [MTD] [NAND] fsl_elbc_nand.c: fix printk warning
    [MTD] [NAND] nandsim: support random page read command
    [MTD] [NAND] fix subpage read for small page NAND

    Linus Torvalds
     

01 Aug, 2008

23 commits

  • Signed-off-by: Al Viro

    Al Viro
     
  • No need to open-code it...

    Signed-off-by: Al Viro

    Al Viro
     
  • Signed-off-by: Miklos Szeredi
    Signed-off-by: Al Viro

    Miklos Szeredi
     
  • Devpts code wants just numbers for tty indexes.

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Al Viro

    Alexey Dobriyan
     
  • proc doesn't use "associate pointer with id" feature of IDR, so switch
    to IDA.

    NOTE, NOTE, NOTE:
    Do not apply if release_inode_number() still mantions MAX_ID_MASK!

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Al Viro

    Alexey Dobriyan
     
  • Id which proc gets from IDR for inode number and id which proc removes
    from IDR do not match. E.g. 0x11a transforms into 0x8000011a.

    Which stayed unnoticed for a long time because, surprise, idr_remove()
    masks out that high bit before doing anything.

    All of this due to "| ~MAX_ID_MASK" in release_inode_number().

    I still don't understand how it's supposed to work, because "| ~MASK"
    is not an inversion for "& MAX" operation.

    So, use just one nice, working addition. Make start offset unsigned int,
    while I'm at it. It's longness is not used anywhere.

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Al Viro

    Alexey Dobriyan
     
  • Callers expect it to drop reference to bdev on all failure exits.

    Signed-off-by: Al Viro

    Al Viro
     
  • * new helper: vfs_quota_on_path(); equivalent of vfs_quota_on() sans the
    pathname resolution.
    * callers of vfs_quota_on() that do their own pathname resolution and
    checks based on it are switched to vfs_quota_on_path(); that way we
    avoid the races.
    * reiserfs leaked dentry/vfsmount references on several failure exits.

    Signed-off-by: Al Viro

    Al Viro
     
  • Signed-off-by: Al Viro

    Al Viro
     
  • New primitive: alloc_fd(start, flags). get_unused_fd() and
    get_unused_fd_flags() become wrappers on top of it.

    Signed-off-by: Al Viro

    Al Viro
     
  • for July 17: early crash on x86-64)

    SELinux needs MAY_APPEND to be passed down to the security hook.
    Otherwise, we get permission denials when only append permission is
    granted by policy even if the opening process specified O_APPEND.
    Shows up as a regression in the ltp selinux testsuite, fixed by
    this patch.

    Signed-off-by: Stephen Smalley
    Signed-off-by: Al Viro

    Stephen Smalley
     
  • We can't use vmalloc for the buffer we use for writing summaries,
    because some drivers may want to DMA from it. So limit the size to 64KiB
    and use kmalloc for it instead.

    Signed-off-by: David Woodhouse

    David Woodhouse
     
  • The mutex is released on a successful return, so it would seem that it
    should be released on an error return as well.

    The semantic patch finds this problem is as follows:
    (http://www.emn.fr/x-info/coccinelle/)

    //
    @@
    expression l;
    @@

    mutex_lock(l);
    ... when != mutex_unlock(l)
    when any
    when strict
    (
    if (...) { ... when != mutex_unlock(l)
    + mutex_unlock(l);
    return ...;
    }
    |
    mutex_unlock(l);
    )
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Mark Fasheh

    Julia Lawall
     
  • This patch fixes an oops that is reproduced when one races writes to a mmap-ed
    region with another process truncating the file.

    Signed-off-by: Sunil Mushran
    Signed-off-by: Mark Fasheh

    Sunil Mushran
     
  • As the fs recovery is asynchronous, there is a small chance that another
    node can mount (and thus recover) the slot before the recovery thread
    gets to it.

    If this happens, the recovery thread will block indefinitely on the
    journal/slot lock as that lock will be held for the duration of the mount
    (by design) by the node assigned to that slot.

    The solution implemented is to keep track of the journal replays using
    a recovery generation in the journal inode, which will be incremented by the
    thread replaying that journal. The recovery thread, before attempting the
    blocking lock on the journal/slot lock, will compare the generation on disk
    with what it has cached and skip recovery if it does not match.

    This bug appears to have been inadvertently introduced during the mount/umount
    vote removal by mainline commit 34d024f84345807bf44163fac84e921513dde323. In the
    mount voting scheme, the messaging would indirectly indicate that the slot
    was being recovered.

    Signed-off-by: Sunil Mushran
    Signed-off-by: Mark Fasheh

    Sunil Mushran
     
  • This patch renames the ij_pad to ij_recovery_generation in struct ocfs2_dinode.
    This will be used to keep count of journal replays after an unclean shutdown.

    Signed-off-by: Sunil Mushran
    Signed-off-by: Mark Fasheh

    Sunil Mushran
     
  • configfs_mkdir() creates a new item by calling its parent's
    ->make_item/group() functions. Once that object is created,
    configfs_mkdir() calls try_module_get() on the new item's module. If it
    succeeds, the module owning the new item cannot be unloaded, and
    configfs is safe to reference the item.

    If the item and the subsystem it belongs to are part of the same module,
    the subsystem is also pinned. This is the common case.

    However, if the subsystem is made up of multiple modules, this may not
    pin the subsystem. Thus, it would be possible to unload the toplevel
    subsystem module while there is still a child item. Thus, we now
    try_module_get() the subsystem's module. This only really affects
    children of the toplevel subsystem group. Deeper children already have
    their parents pinned.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     
  • When checking for user-created elements under an item to be removed by rmdir(),
    configfs_detach_prep() counts fake configfs_dirents created by dir_open() as
    user-created and fails when finding one. It is however perfectly valid to remove
    a directory that is open.

    Simply make configfs_detach_prep() skip fake configfs_dirent, like it already
    does for attributes, and like detach_groups() does.

    Signed-off-by: Louis Rilling
    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Louis Rilling
     
  • Once a new configfs directory is created by configfs_attach_item() or
    configfs_attach_group(), a failure in the remaining initialization steps leads
    to removing a directory which inode the VFS may have already accessed.

    This commit adds the necessary inode locking to safely remove configfs
    directories while cleaning up after a failure. As an advantage, the locking
    rules of populate_groups() and detach_groups() become the same: the caller must
    have the group's inode mutex locked.

    Signed-off-by: Louis Rilling
    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Louis Rilling
     
  • process 1: process 2:
    configfs_mkdir("A")
    attach_group("A")
    attach_item("A")
    d_instantiate("A")
    populate_groups("A")
    mutex_lock("A")
    attach_group("A/B")
    attach_item("A")
    d_instantiate("A/B")
    mkdir("A/B/C")
    do_path_lookup("A/B/C", LOOKUP_PARENT)
    ok
    lookup_create("A/B/C")
    mutex_lock("A/B")
    ok
    configfs_mkdir("A/B/C")
    ok
    attach_group("A/C")
    attach_item("A/C")
    d_instantiate("A/C")
    populate_groups("A/C")
    mutex_lock("A/C")
    attach_group("A/C/D")
    attach_item("A/C/D")
    failure
    mutex_unlock("A/C")
    detach_groups("A/C")
    nothing to do
    mkdir("A/C/E")
    do_path_lookup("A/C/E", LOOKUP_PARENT)
    ok
    lookup_create("A/C/E")
    mutex_lock("A/C")
    ok
    configfs_mkdir("A/C/E")
    ok
    detach_item("A/C")
    d_delete("A/C")
    mutex_unlock("A")
    detach_groups("A")
    mutex_lock("A/B")
    detach_group("A/B")
    detach_groups("A/B")
    nothing since no _default_ group
    detach_item("A/B")
    mutex_unlock("A/B")
    d_delete("A/B")
    detach_item("A")
    d_delete("A")

    Two bugs:

    1/ "A/B/C" and "A/C/E" are created, but never removed while their parent are
    removed in the end. The same could happen with symlink() instead of mkdir().

    2/ "A" and "A/C" inodes are not locked while detach_item() is called on them,
    which may probably confuse VFS.

    This commit fixes 1/, tagging new directories with CONFIGFS_USET_CREATING before
    building the inode and instantiating the dentry, and validating the whole
    group+default groups hierarchy in a second pass by clearing
    CONFIGFS_USET_CREATING.
    mkdir(), symlink(), lookup(), and dir_open() simply return -ENOENT if
    called in (or linking to) a directory tagged with CONFIGFS_USET_CREATING. This
    does not prevent userspace from calling stat() successfuly on such directories,
    but this prevents userspace from adding (children to | symlinking from/to |
    read/write attributes of | listing the contents of) not validated items. In
    other words, userspace will not interact with the subsystem on a new item until
    the new item creation completes correctly.
    It was first proposed to re-use CONFIGFS_USET_IN_MKDIR instead of a new
    flag CONFIGFS_USET_CREATING, but this generated conflicts when checking the
    target of a new symlink: a valid target directory in the middle of attaching
    a new user-created child item could be wrongly detected as being attached.

    2/ is fixed by next commit.

    Signed-off-by: Louis Rilling
    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Louis Rilling
     
  • On a similar pattern as mkdir() vs rmdir(), a failing symlink() may make rmdir()
    fail for the symlink's parent and the symlink's target as well.

    failing symlink() making target's rmdir() fail:

    process 1: process 2:
    symlink("A/S" -> "B")
    allow_link()
    create_link()
    attach to "B" links list
    rmdir("B")
    detach_prep("B")
    error because of new link
    configfs_create_link("A", "S")
    error (eg -ENOMEM)

    failing symlink() making parent's rmdir() fail:

    process 1: process 2:
    symlink("A/D/S" -> "B")
    allow_link()
    create_link()
    attach to "B" links list
    configfs_create_link("A/D", "S")
    make_dirent("A/D", "S")
    rmdir("A")
    detach_prep("A")
    detach_prep("A/D")
    error because of "S"
    create("S")
    error (eg -ENOMEM)

    We cannot use the same solution as for mkdir() vs rmdir(), since rmdir() on the
    target cannot wait on the i_mutex of the new symlink's parent without risking a
    deadlock (with other symlink() or sys_rename()). Instead we define a global
    mutex protecting all configfs symlinks attachment, so that rmdir() can avoid the
    races above.

    Signed-off-by: Louis Rilling
    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Louis Rilling
     
  • The rule for configfs symlinks is that symlinks always point to valid
    config_items, and prevent the target from being removed. However,
    configfs_symlink() only checks that it can grab a reference on the target item,
    without ensuring that it remains alive until the symlink is correctly attached.

    This patch makes configfs_symlink() fail whenever the target is being removed,
    using the CONFIGFS_USET_DROPPING flag set by configfs_detach_prep() and
    protected by configfs_dirent_lock.

    This patch introduces a similar (weird?) behavior as with mkdir failures making
    rmdir fail: if symlink() races with rmdir() of the parent directory (or its
    youngest user-created ancestor if parent is a default group) or rmdir() of the
    target directory, and then fails in configfs_create(), this can make the racing
    rmdir() fail despite the concerned directory having no user-created entry (resp.
    no symlink pointing to it or one of its default groups) in the end.
    This behavior is fixed in later patches.

    Signed-off-by: Louis Rilling
    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Louis Rilling
     
  • We now use PTR_ERR() in the ->make_item() and ->make_group() operations.
    Folks including configfs.h need err.h.

    Signed-off-by: Joel Becker
    Signed-off-by: Mark Fasheh

    Joel Becker
     

31 Jul, 2008

4 commits

  • We zero-fill them like we are supposed to, and that's all fine. It's
    only an error if the 'romfs_copyfrom()' routine isn't able to fill the
    data that is supposed to be there.

    Most of the patch is really just re-organizing the code a bit, and using
    separate variables for the error value and for how much of the page we
    actually filled from the filesystem.

    Reported-and-tested-by: Chris Fester
    Cc: Alexander Viro
    Cc: Matt Waddel
    Cc: Greg Ungerer
    Signed-of-by: Linus Torvalds

    Linus Torvalds
     
  • Uninline the __remove_assoc_queue() function in fs/buffer.c, called at too
    many places and too long to really be inlined. Size results:

    text data bss dec hex filename
    1134606 118840 212992 1466438 166046 vmlinux.old
    1134303 118840 212992 1466135 165f17 vmlinux
    -303 0 0 -303 -12F +/-

    This patch is part of the Linux Tiny project and has been originally
    written by Matt Mackall .

    Signed-off-by: Thomas Petazzoni
    Cc: Matt Mackall
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Petazzoni
     
  • Missing cpu_to_be64 on some constant assignments.
    fs/omfs/dir.c:107:16: warning: incorrect type in assignment (different base types)
    fs/omfs/dir.c:107:16: expected restricted __be64 [usertype] i_sibling
    fs/omfs/dir.c:107:16: got unsigned long long
    fs/omfs/file.c:33:13: warning: incorrect type in assignment (different base types)
    fs/omfs/file.c:33:13: expected restricted __be64 [usertype] e_next
    fs/omfs/file.c:33:13: got unsigned long long
    fs/omfs/file.c:36:24: warning: incorrect type in assignment (different base types)
    fs/omfs/file.c:36:24: expected restricted __be64 [usertype] e_cluster
    fs/omfs/file.c:36:24: got unsigned long long
    fs/omfs/file.c:37:23: warning: incorrect type in assignment (different base types)
    fs/omfs/file.c:37:23: expected restricted __be64 [usertype] e_blocks
    fs/omfs/file.c:37:23: got unsigned long long

    fs/omfs/bitmap.c:74:18: warning: incorrect type in argument 2 (different signedness)
    fs/omfs/bitmap.c:74:18: expected unsigned long volatile *addr
    fs/omfs/bitmap.c:74:18: got long *
    fs/omfs/bitmap.c:77:20: warning: incorrect type in argument 2 (different signedness)
    fs/omfs/bitmap.c:77:20: expected unsigned long volatile *addr
    fs/omfs/bitmap.c:77:20: got long *
    fs/omfs/bitmap.c:112:17: warning: incorrect type in argument 2 (different signedness)
    fs/omfs/bitmap.c:112:17: expected unsigned long volatile *addr
    fs/omfs/bitmap.c:112:17: got long *

    Signed-off-by: Harvey Harrison
    Acked-by: Bob Copeland
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     
  • This commit:

    commit ba52de123d454b57369f291348266d86f4b35070
    Author: Theodore Ts'o
    Date: Wed Sep 27 01:50:49 2006 -0700

    [PATCH] inode-diet: Eliminate i_blksize from the inode structure

    caused the block size used by pseudo-filesystems to decrease from
    PAGE_SIZE to 1024 leading to a doubling of the number of context switches
    during a kernbench run.

    Signed-off-by: Alex Nixon
    Cc: Andi Kleen
    Cc: Jeremy Fitzhardinge
    Cc: Peter Zijlstra
    Cc: Ingo Molnar
    Cc: Ian Campbell
    Cc: "Theodore Ts'o"
    Cc: Alexander Viro
    Cc: Hugh Dickins
    Cc: Jens Axboe
    Cc: [2.6.25.x, 2.6.26.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alex Nixon
     

29 Jul, 2008

2 commits

  • With SLUB debugging turned on in 2.6.26, I was getting memory corruption
    when testing eCryptfs. The root cause turned out to be that eCryptfs was
    doing kmalloc(PAGE_CACHE_SIZE); virt_to_page() and treating that as a nice
    page-aligned chunk of memory. But at least with SLUB debugging on, this
    is not always true, and the page we get from virt_to_page does not
    necessarily match the PAGE_CACHE_SIZE worth of memory we got from kmalloc.

    My simple testcase was 2 loops doing "rm -f fileX; cp /tmp/fileX ." for 2
    different multi-megabyte files. With this change I no longer see the
    corruption.

    Signed-off-by: Eric Sandeen
    Acked-by: Michael Halcrow
    Acked-by: Rik van Riel
    Cc: [2.6.25.x, 2.6.26.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Sandeen
     
  • I got section mismatch message about bio_integrity_init_slab().

    WARNING: fs/built-in.o(__ksymtab+0xb60): Section mismatch in reference from the variable __ksymtab_bio_integrity_init_slab to the function .init.text:bio_integrity_init_slab()

    The symbol bio_integrity_init_slab is exported and annotated __init Fix
    this by removing the __init annotation of bio_integrity_init_slab or drop
    the export.

    It only call from init_bio(). The EXPORT_SYMBOL() can be removed.

    Signed-off-by: Yoichi Yuasa
    Cc: "Martin K. Petersen"
    Cc: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yoichi Yuasa