15 Sep, 2009

34 commits

  • Allow add_key() and KEYCTL_INSTANTIATE to accept key payloads in XDR form as
    described by openafs-1.4.10/src/auth/afs_token.xg. This provides a way of
    passing kaserver, Kerberos 4, Kerberos 5 and GSSAPI keys from userspace, and
    allows for future expansion.

    Signed-off-by: David Howells
    Signed-off-by: David S. Miller

    David Howells
     
  • Declare the security index constants symbolically rather than just referring
    to them numerically.

    Signed-off-by: David Howells
    Signed-off-by: David S. Miller

    David Howells
     
  • pcnet_cs,serial_cs:

    add cis of Linksys lan&modem mulitifunction pcmcia card
    and some modem card(MT5634ZLX, RS-COM-2P).

    Signed-off-by: Ken Kawasaki
    Signed-off-by: David S. Miller

    Ken Kawasaki
     
  • struct socket has a 16 bit hole that triggers kmemcheck warnings.

    As suggested by Ingo, use kmemcheck annotations

    Signed-off-by: Eric Dumazet
    Acked-by: Ingo Molnar
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • This patch fixes commit e36b9d16c6a6d0f59803b3ef04ff3c22c3844c10. The approach
    there is to call dev_close()/dev_open() whenever the device type is changed in
    order to remap the device IP multicast addresses to HW multicast addresses.
    This approach suffers from 2 drawbacks:

    *. It assumes tha the device is UP when calling dev_close(), or otherwise
    dev_close() has no affect. It is worth to mention that initscripts (Redhat)
    and sysconfig (Suse) doesn't act the same in this matter.
    *. dev_close() has other side affects, like deleting entries from the routing
    table, which might be unnecessary.

    The fix here is to directly remap the IP multicast addresses to HW multicast
    addresses for a bonding device that changes its type, and nothing else.

    Reported-by: Jason Gunthorpe
    Signed-off-by: Moni Shoua
    Signed-off-by: David S. Miller

    Moni Shoua
     
  • When using nanosleep() in an userspace application we get a ratelimit warning

    NOHZ: local_softirq_pending 08

    for 10 times.

    The echo of CAN frames is done from process context and softirq context only.
    Therefore the usage of netif_rx() was wrong (for years).

    This patch replaces netif_rx() with netif_rx_ni() which has to be used from
    process/softirq context. It also adds a missing comment that can_send() must
    no be used from hardirq context.

    Signed-off-by: Oliver Hartkopp
    Signed-off-by: Urs Thuermann
    Signed-off-by: David S. Miller

    Oliver Hartkopp
     
  • It was once upon time so that snd_sthresh was a 16-bit quantity.
    ...That has not been true for long period of time. I run across
    some ancient compares which still seem to trust such legacy.
    Put all that magic into a single place, I hopefully found all
    of them.

    Compile tested, though linking of allyesconfig is ridiculous
    nowadays it seems.

    Signed-off-by: Ilpo Järvinen
    Signed-off-by: David S. Miller

    Ilpo Järvinen
     
  • After the recent mq change using ingress qdisc overwrites dev->qdisc;
    there is also a wrong old qdisc pointer passed to notify_and_destroy.

    Signed-off-by: Jarek Poplawski
    Signed-off-by: David S. Miller

    Jarek Poplawski
     
  • In the case of fiber and serdes adapters we were seeing issues with ethtool
    -t causing kernel panics due to null function pointers. To prevent this we
    need to exit out of the phy reset code in the event that we do not have a
    valid phy.

    Signed-off-by: Alexander Duyck
    Signed-off-by: Don Skidmore
    Signed-off-by: David S. Miller

    Alexander Duyck
     
  • Our SGMII phy code was incomplete in that it was not actually placing the
    phy in SGMII mode and as a result the PHY was not able to establish a link
    when connected to a non serdes link partner. This patch updates the code
    to combine the SGMII/serdes PCS init and to add the necessary reset.

    Signed-off-by: Alexander Duyck
    Signed-off-by: Don Skidmore
    Signed-off-by: David S. Miller

    Alexander Duyck
     
  • Currently the media type detection for CX4 adapters lumps them into a
    type of fiber. This causes some strange fallout when firmware verification
    is done on the NIC, and certain fiber NIC rules get enforced incorrectly.

    This patch introduces a new media type for CX4, and puts both 82598 and
    82599 CX4 adapters into this bucket.

    Signed-off-by: Peter P Waskiewicz Jr
    Signed-off-by: Jeff Kirsher
    Signed-off-by: Don Skidmore
    Signed-off-by: David S. Miller

    Peter P Waskiewicz Jr
     
  • This patch adds support for CX4 adapters based on 82599.

    Signed-off-by: Peter P Waskiewicz Jr
    Signed-off-by: Jeff Kirsher
    Signed-off-by: Don Skidmore
    Signed-off-by: David S. Miller

    Peter P Waskiewicz Jr
     
  • The packet split feature was recently moved out of the adapter-wide flags
    feature field and into a per-Rx ring feature field. In the process, packet
    split isn't properly disabled in the Rx ring if the adapter has it globally
    disabled, followed by a device reset.

    This won't impact the driver today, since it's always in packet split mode.
    However, this will prevent any pitfalls if someone disables packet split on
    the adapter in the future and doesn't disable it in each ring.

    Signed-off-by: Peter P Waskiewicz Jr
    Signed-off-by: Jeff Kirsher
    Signed-off-by: Don Skidmore
    Signed-off-by: David S. Miller

    Peter P Waskiewicz Jr
     
  • From: Rémi Denis-Courmont

    Signed-off-by: Rémi Denis-Courmont
    Signed-off-by: David S. Miller

    Rémi Denis-Courmont
     
  • From: Rémi Denis-Courmont

    Signed-off-by: Rémi Denis-Courmont
    Signed-off-by: David S. Miller

    Rémi Denis-Courmont
     
  • Signed-off-by: Alexey Dobriyan
    Signed-off-by: David S. Miller

    Alexey Dobriyan
     
  • Signed-off-by: Alexey Dobriyan
    Signed-off-by: David S. Miller

    Alexey Dobriyan
     
  • Remove long removed "inet_protocol_base" declaration.

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: David S. Miller

    Alexey Dobriyan
     
  • Now that all Blackfin boards are using the board resources, we don't need
    to keep the arch/board specific crap in the driver header.

    Signed-off-by: Michael Hennerich
    Signed-off-by: Mike Frysinger
    Signed-off-by: David S. Miller

    Michael Hennerich
     
  • No code change, cosmetical changes only:

    * whitespace cleanup via scripts/cleanfile,
    * remove self-references to filename at top of files,
    * fix coding style (extraneous brackets),
    * fix documentation style (kernel-doc-nano-HOWTO).

    Thanks are due to Ivo Augusto Calado who raised these issues by
    submitting good-quality patches.

    Signed-off-by: Gerrit Renker
    Signed-off-by: David S. Miller

    Gerrit Renker
     
  • Since my commits introducing netns awareness into
    genetlink we can get this problem:

    BUG: scheduling while atomic: modprobe/1178/0x00000002
    2 locks held by modprobe/1178:
    #0: (genl_mutex){+.+.+.}, at: [] genl_register_mc_grou
    #1: (rcu_read_lock){.+.+..}, at: [] genl_register_mc_g
    Pid: 1178, comm: modprobe Not tainted 2.6.31-rc8-wl-34789-g95cb731-dirty #
    Call Trace:
    [] __schedule_bug+0x85/0x90
    [] schedule+0x108/0x588
    [] netlink_table_grab+0xa1/0xf0
    [] netlink_change_ngroups+0x47/0x100
    [] genl_register_mc_group+0x12f/0x290

    because I overlooked that netlink_table_grab() will
    schedule, thinking it was just the rwlock. However,
    in the contention case, that isn't actually true.

    Fix this by letting the code grab the netlink table
    lock first and then the RCU for netns protection.

    Signed-off-by: Johannes Berg
    Signed-off-by: David S. Miller

    Johannes Berg
     
  • Have atalk_route_packet() return NET_RX_SUCCESS not NET_XMIT_SUCCESS

    atalk_route_packet() returns NET_RX_DROP if it's call to
    aarp_send_ddp() returns NET_XMIT_DROP. If aarp_send_ddp() returns
    anything else atalk_route_packet() should return NET_RX_SUCCESS, not
    NET_XMIT_SUCCESS.

    Signed-off-by: Mark Smith
    Signed-off-by: David S. Miller

    Mark Smith
     
  • * 'osync_cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:
    fsync: wait for data writeout completion before calling ->fsync
    vfs: Remove generic_osync_inode() and sync_page_range{_nolock}()
    fat: Opencode sync_page_range_nolock()
    pohmelfs: Use new syncing helper
    xfs: Convert sync_page_range() to simple filemap_write_and_wait_range()
    ocfs2: Update syncing after splicing to match generic version
    ntfs: Use new syncing helpers and update comments
    ext4: Remove syncing logic from ext4_file_write
    ext3: Remove syncing logic from ext3_file_write
    ext2: Update comment about generic_osync_inode
    vfs: Introduce new helpers for syncing after writing to O_SYNC file or IS_SYNC inode
    vfs: Rename generic_file_aio_write_nolock
    ocfs2: Use __generic_file_aio_write instead of generic_file_aio_write_nolock
    pohmelfs: Use __generic_file_aio_write instead of generic_file_aio_write_nolock
    vfs: Remove syncing from generic_file_direct_write() and generic_file_buffered_write()
    vfs: Export __generic_file_aio_write() and add some comments
    vfs: Introduce filemap_fdatawait_range

    Linus Torvalds
     
  • * 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw:
    GFS2: Whitespace fixes
    GFS2: Remove unused sysfs file
    GFS2: Be extra careful about deallocating inodes
    GFS2: Remove no_formal_ino generating code
    GFS2: Rename eattr.[ch] as xattr.[ch]
    GFS2: Clean up of extended attribute support
    GFS2: Add explanation of extended attr on-disk format
    GFS2: Add "-o errors=panic|withdraw" mount options
    GFS2: jumping to wrong label?
    GFS2: free disk inode which is deleted by remote node -V2
    GFS2: Add a document explaining GFS2's uevents
    GFS2: Add sysfs link to device
    GFS2: Replace assertion with proper error handling
    GFS2: Improve error handling in inode allocation
    GFS2: Add some more info to uevents
    GFS2: Add online uevent to GFS2

    Linus Torvalds
     
  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6:
    udf: Fix possible corruption when close races with write
    udf: Perform preallocation only for regular files
    udf: Remove wrong assignment in udf_symlink
    udf: Remove dead code

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2: (21 commits)
    fs/Kconfig: move nilfs2 outside misc filesystems
    nilfs2: convert nilfs_bmap_lookup to an inline function
    nilfs2: allow btree code to directly call dat operations
    nilfs2: add update functions of virtual block address to dat
    nilfs2: remove individual gfp constants for each metadata file
    nilfs2: stop zero-fill of btree path just before free it
    nilfs2: remove unused btree argument from btree functions
    nilfs2: remove nilfs_dat_abort_start and nilfs_dat_abort_free
    nilfs2: shorten freeze period due to GC in write operation v3
    nilfs2: add more check routines in mount process
    nilfs2: An unassigned variable is assigned to a never used structure member
    nilfs2: use GFP_NOIO for bio_alloc instead of GFP_NOWAIT
    nilfs2: stop using periodic write_super callback
    nilfs2: clean up nilfs_write_super
    nilfs2: fix disorder of nilfs_write_super in nilfs_sync_fs
    nilfs2: remove redundant super block commit
    nilfs2: implement nilfs_show_options to display mount options in /proc/mounts
    nilfs2: always lookup disk block address before reading metadata block
    nilfs2: use semaphore to protect pointer to a writable FS-instance
    nilfs2: fix format string compile warning (ino_t)
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
    cifs: consolidate reconnect logic in smb_init routines
    cifs: Replace wrtPending with a real reference count
    cifs: protect GlobalOplock_Q with its own spinlock
    cifs: use tcon pointer in cifs_show_options
    cifs: send IPv6 addr in upcall with colon delimiters
    [CIFS] Fix checkpatch warnings
    PATCH] cifs: fix broken mounts when a SSH tunnel is used (try #4)
    [CIFS] Memory leak in ntlmv2 hash calculation
    [CIFS] potential NULL dereference in parse_DFS_referrals()

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6: (21 commits)
    sparc64: Initial niagara2 perf counter support.
    sparc64: Perf counter 'nop' event is not constant.
    sparc64: Provide a way to specify a perf counter overflow IRQ enable bit.
    sparc64: Provide hypervisor tracing bit support for perf counters.
    sparc64: Initial hw perf counter support.
    sparc64: Implement a real set_perf_counter_pending().
    sparc64: Use nmi_enter() and nmi_exit(), as needed.
    sparc64: Provide extern decls for sparc_??u_type strings.
    sparc64: Make touch_nmi_watchdog() actually work.
    sparc64: Kill unnecessary cast in profile_timer_exceptions_notify().
    sparc64: Manage NMI watchdog enabling like x86.
    sparc: add basic support for 'perf'
    sparc: convert /proc/io_map, /proc/dvma_map to seq_file
    sparc, leon: sparc-leon specific SRMMU initialization and bootup fixes.
    sparc,leon: Added support for AMBAPP bus.
    sparc,leon: Introduce the sparc-leon CPU type.
    sparc,leon: Redefine MMU register access asi if CONFIG_LEON
    sparc,leon: CONFIG_SPARC_LEON option and leon specific files.
    sparc64: cheaper asm/uaccess.h inclusion
    SPARC: fix duplicate declaration
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1623 commits)
    netxen: update copyright
    netxen: fix tx timeout recovery
    netxen: fix file firmware leak
    netxen: improve pci memory access
    netxen: change firmware write size
    tg3: Fix return ring size breakage
    netxen: build fix for INET=n
    cdc-phonet: autoconfigure Phonet address
    Phonet: back-end for autoconfigured addresses
    Phonet: fix netlink address dump error handling
    ipv6: Add IFA_F_DADFAILED flag
    net: Add DEVTYPE support for Ethernet based devices
    mv643xx_eth.c: remove unused txq_set_wrr()
    ucc_geth: Fix hangs after switching from full to half duplex
    ucc_geth: Rearrange some code to avoid forward declarations
    phy/marvell: Make non-aneg speed/duplex forcing work for 88E1111 PHYs
    drivers/net/phy: introduce missing kfree
    drivers/net/wan: introduce missing kfree
    net: force bridge module(s) to be GPL
    Subject: [PATCH] appletalk: Fix skb leak when ipddp interface is not loaded
    ...

    Fixed up trivial conflicts:

    - arch/x86/include/asm/socket.h

    converted to in the x86 tree. The generic
    header has the same new #define's, so that works out fine.

    - drivers/net/tun.c

    fix conflict between 89f56d1e9 ("tun: reuse struct sock fields") that
    switched over to using 'tun->socket.sk' instead of the redundantly
    available (and thus removed) 'tun->sk', and 2b980dbd ("lsm: Add hooks
    to the TUN driver") which added a new 'tun->sk' use.

    Noted in 'next' by Stephen Rothwell.

    Linus Torvalds
     
  • * 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: split __phys_addr out into separate file
    xen: use stronger barrier after unlocking lock
    xen: only enable interrupts while actually blocking for spinlock
    xen: make -fstack-protector work under Xen

    Linus Torvalds
     
  • When we close a file, we remove preallocated blocks from it. But this
    truncation was not protected by i_mutex and thus it could have raced with a
    write through a different fd and cause crashes or even filesystem corruption.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • So far we preallocated blocks also for directories but that brings a
    problem, when to get rid of preallocated blocks we don't need. So far
    we removed them in udf_clear_inode() which has a disadvantage that
    1) blocks are unavailable long after writing to a directory finished
    and thus one can get out of space unnecessarily early
    2) releasing blocks from udf_clear_inode is problematic because VFS
    does not expect us to redirty inode there and it also slows down
    memory reclaim.

    So preallocate blocks only for regular files where we can drop preallocation
    in udf_release_file.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • Recomputation of the pointer was wrong (it should have been just increment).
    Luckily, we never use the computed value. Remove it.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • Remove code that gets never used.

    Signed-off-by: Jan Kara

    Jan Kara
     

14 Sep, 2009

6 commits

  • Currenly vfs_fsync(_range) first calls filemap_fdatawrite to write out
    the data, the calls into ->fsync to write out the metadata and then finally
    calls filemap_fdatawait to wait for the data I/O to complete. What sounds
    like a clever micro-optimization actually is nast trap for many filesystems.

    For many modern filesystems i_size or other inode information is only
    updated on I/O completion and we need to wait for I/O to finish before
    we can write out the metadata. For old fashionen filesystems that
    instanciate blocks during the actual write and also update the metadata
    at that point it opens up a large window were we could expose uninitialized
    blocks after a crash. While a few filesystems that need it already wait
    for the I/O to finish inside their ->fsync methods it is rather suboptimal
    as it is done under the i_mutex and also always for the whole file instead
    of just a part as we could do for O_SYNC handling.

    Here is a small audit of all fsync instances in the tree:

    - spufs_mfc_fsync:
    - ps3flash_fsync:
    - vol_cdev_fsync:
    - printer_fsync:
    - fb_deferred_io_fsync:
    - bad_file_fsync:
    - simple_sync_file:

    don't care - filesystems/drivers do't use the page cache or are
    purely in-memory.

    - simple_fsync:
    - file_fsync:
    - affs_file_fsync:
    - fat_file_fsync:
    - jfs_fsync:
    - ubifs_fsync:
    - reiserfs_dir_fsync:
    - reiserfs_sync_file:

    never touch pagecache themselves. We need to wait before if we do
    not want to expose stale data after an allocation.

    - afs_fsync:
    - fuse_fsync_common:

    do the waiting writeback itself in awkward ways, would benefit from
    proper semantics

    - block_fsync:

    Does a filemap_write_and_wait on the block device inode. Because we
    now have f_mapping that is the same inode we call it on in vfs_fsync.
    So just removing it and letting the VFS do the work in one go would
    be an improvement.

    - btrfs_sync_file:
    - cifs_fsync:
    - xfs_file_fsync:

    need the wait first and currently do it themselves. would benefit from
    doing it outside i_mutex.

    - coda_fsync:
    - ecryptfs_fsync:
    - exofs_file_fsync:
    - shm_fsync:

    only passes the fsync through to the lower layer

    - ext3_sync_file:

    doesn't seem to care, comments are confusing.

    - ext4_sync_file:

    would need the wait to work correctly for delalloc mode with late
    i_size updates. Otherwise the ext3 comment applies.

    currently implemens it's own writeback and wait in an odd way,
    could benefit from doing it properly.

    - gfs2_fsync:

    not needed for journaled data mode, but probably harmless there.
    Currently writes back data asynchronously itself. Needs some
    major audit.

    - hostfs_fsync:

    just calls fsync/datasync on the host FD. Without the wait before
    data might not even be inflight yet if we're unlucky.

    - hpfs_file_fsync:
    - ncp_fsync:

    no-ops. Dangerous before and after.

    - jffs2_fsync:

    just calls jffs2_flush_wbuf_gc, not sure how this relates to data.

    - nfs_fsync_dir:

    just increments stats, claims all directory operations are synchronous

    - nfs_file_fsync:

    only writes out data??? Looks very odd.

    - nilfs_sync_file:

    looks like it expects all data done, but not sure from the code

    - ntfs_dir_fsync:
    - ntfs_file_fsync:

    appear to do their own data writeback. Very convoluted code.

    - ocfs2_sync_file:

    does it's own data writeback, but no wait. probably needs the wait.

    - smb_fsync:

    according to a comment expects all pages written already, probably needs
    the wait before.

    This patch only changes vfs_fsync_range, removal of the wait in the methods
    that have it is left to the filesystem maintainers. Note that most
    filesystems really do need an audit for their fsync methods given the
    gems found in this very brief audit.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jan Kara

    Christoph Hellwig
     
  • Remove these three functions since nobody uses them anymore.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • fat_cont_expand() is the only user of sync_page_range_nolock(). It's also the
    only user of generic_osync_inode() which does not have a file open. So
    opencode needed actions for FAT so that we can convert generic_osync_inode() to
    a standard syncing path.

    Update a comment about generic_osync_inode().

    CC: OGAWA Hirofumi
    Signed-off-by: Jan Kara

    Jan Kara
     
  • Use new generic_write_sync() helper instead of sync_page_range().

    Acked-by: Evgeniy Polyakov
    Signed-off-by: Jan Kara

    Jan Kara
     
  • Christoph Hellwig says that it is enough for XFS to call
    filemap_write_and_wait_range() instead of sync_page_range() because we do
    all the metadata syncing when forcing the log.

    CC: Felix Blyakher
    CC: xfs@oss.sgi.com
    CC: Christoph Hellwig
    Signed-off-by: Jan Kara

    Jan Kara
     
  • Update ocfs2 specific splicing code to use generic syncing helper. The sync now
    does not happen under rw_lock because generic_write_sync() acquires i_mutex
    which ranks above rw_lock. That should not matter because standard fsync path
    does not hold it either.

    Acked-by: Joel Becker
    Acked-by: Mark Fasheh
    CC: ocfs2-devel@oss.oracle.com
    Signed-off-by: Jan Kara

    Jan Kara