07 Jan, 2009

3 commits

  • …s/security-testing-2.6

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:
    CRED: Fix regression in cap_capable() as shown up by sys_faccessat() [ver #3]
    Revert "CRED: Fix regression in cap_capable() as shown up by sys_faccessat() [ver #2]"
    SELinux: shrink sizeof av_inhert selinux_class_perm and context
    CRED: Fix regression in cap_capable() as shown up by sys_faccessat() [ver #2]
    keys: fix sparse warning by adding __user annotation to cast
    smack: Add support for unlabeled network hosts and networks
    selinux: Deprecate and schedule the removal of the the compat_net functionality
    netlabel: Update kernel configuration API

    Linus Torvalds
     
  • James Morris
     
  • Replace s390_root_dev_register() with root_device_register() etc.

    [Includes fix from Cornelia Huck]

    Signed-off-by: Mark McLoughlin
    Cc: Cornelia Huck
    Signed-off-by: Greg Kroah-Hartman

    Mark McLoughlin
     

06 Jan, 2009

9 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (44 commits)
    qlge: Fix sparse warnings for tx ring indexes.
    qlge: Fix sparse warning regarding rx buffer queues.
    qlge: Fix sparse endian warning in ql_hw_csum_setup().
    qlge: Fix sparse endian warning for inbound packet control block flags.
    qlge: Fix sparse warnings for byte swapping in qlge_ethool.c
    myri10ge: print MAC and serial number on probe failure
    pkt_sched: cls_u32: Fix locking in u32_change()
    iucv: fix cpu hotplug
    af_iucv: Free iucv path/socket in path_pending callback
    af_iucv: avoid left over IUCV connections from failing connects
    af_iucv: New error return codes for connect()
    net/ehea: bitops work on unsigned longs
    Revert "net: Fix for initial link state in 2.6.28"
    tcp: Kill extraneous SPLICE_F_NONBLOCK checks.
    tcp: don't mask EOF and socket errors on nonblocking splice receive
    dccp: Integrate the TFRC library with DCCP
    dccp: Clean up ccid.c after integration of CCID plugins
    dccp: Lockless integration of CCID congestion-control plugins
    qeth: get rid of extra argument after printk to dev_* conversion
    qeth: No large send using EDDP for HiperSockets.
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
    inotify: fix type errors in interfaces
    fix breakage in reiserfs_new_inode()
    fix the treatment of jfs special inodes
    vfs: remove duplicate code in get_fs_type()
    add a vfs_fsync helper
    sys_execve and sys_uselib do not call into fsnotify
    zero i_uid/i_gid on inode allocation
    inode->i_op is never NULL
    ntfs: don't NULL i_op
    isofs check for NULL ->i_op in root directory is dead code
    affs: do not zero ->i_op
    kill suid bit only for regular files
    vfs: lseek(fd, 0, SEEK_CUR) race condition

    Linus Torvalds
     
  • New nodes are inserted in u32_change() under rtnl_lock() with wmb(),
    so without tcf_tree_lock() like in other classifiers (e.g. cls_fw).
    This isn't enough without rmb() on the read side, but on the other
    hand adding such barriers doesn't give any savings, so the lock is
    added instead.

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

    Jarek Poplawski
     
  • If the iucv module is compiled in/loaded but no user is registered cpu
    hot remove doesn't work. Reason for that is that the iucv cpu hotplug
    notifier on CPU_DOWN_PREPARE checks if the iucv_buffer_cpumask would
    be empty after the corresponding bit would be cleared. However the bit
    was never set since iucv wasn't enable. That causes all cpu hot unplug
    operations to fail in this scenario.
    To fix this use iucv_path_table as an indicator wether iucv is enabled
    or not.

    Signed-off-by: Heiko Carstens
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Heiko Carstens
     
  • Free iucv path after iucv_path_sever() calls in iucv_callback_connreq()
    (path_pending() iucv callback).
    If iucv_path_accept() fails, free path and free/kill newly created socket.

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Hendrik Brueckner
     
  • For certain types of AFIUCV socket connect failures IUCV connections
    are left over. Add some cleanup-statements to avoid cluttered IUCV
    connections.

    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Ursula Braun
     
  • If the iucv_path_connect() call fails then return an error code that
    corresponds to the iucv_path_connect() failure condition; instead of
    returning -ECONNREFUSED for any failure.

    This helps to improve error handling for user space applications
    (e.g. inform the user that the z/VM guest is not authorized to
    connect to other guest virtual machines).

    The error return codes are based on those described in connect(2).

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Ursula Braun
    Signed-off-by: David S. Miller

    Hendrik Brueckner
     
  • This reverts commit 22604c866889c4b2e12b73cbf1683bda1b72a313.

    We can't fix this issue in this way, because we now can try
    to take the dev_base_lock rwlock as a writer in software interrupt
    context and that is not allowed without major surgery elsewhere.

    This initial link state problem needs to be solved in some other
    way.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • ... and don't bother in callers. Don't bother with zeroing i_blocks,
    while we are at it - it's already been zeroed.

    i_mode is not worth the effort; it has no common default value.

    Signed-off-by: Al Viro

    Al Viro
     

05 Jan, 2009

15 commits

  • In splice TCP receive, the SPLICE_F_NONBLOCK flag is used
    to compute the "timeo" value. So checking it again inside
    of the main receive loop to trigger -EAGAIN processing is
    entirely unnecessary.

    Noticed by Jarek P. and Lennert Buytenhek.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Currently, setting SPLICE_F_NONBLOCK on splice from a TCP socket
    results in masking of EOF (RDHUP) and error conditions on the socket
    by an -EAGAIN return. Move the NONBLOCK check in tcp_splice_read()
    to be after the EOF and error checks to fix this.

    Signed-off-by: Lennert Buytenhek
    Signed-off-by: David S. Miller

    Lennert Buytenhek
     
  • This patch integrates the TFRC library, which is a dependency of CCID-3 (and
    CCID-4), with the new use of CCIDs in the DCCP module.

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

    Gerrit Renker
     
  • This patch cleans up after integrating the CCID modules and, in addition,

    * moves the if/else cases from ccid_delete() into ccid_hc_{tx,rx}_delete();
    * removes the 'gfp' argument to ccid_new() - since it is always gfp_any().

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

    Gerrit Renker
     
  • Based on Arnaldo's earlier patch, this patch integrates the standardised
    CCID congestion control plugins (CCID-2 and CCID-3) of DCCP with dccp.ko:

    * enables a faster connection path by eliminating the need to always go
    through the CCID registration lock;

    * updates the implementation to use only a single array whose size equals
    the number of configured CCIDs instead of the maximum (256);

    * since the CCIDs are now fixed array elements, synchronization is no
    longer needed, simplifying use and implementation.

    CCID-2 is suggested as minimum for a basic DCCP implementation (RFC 4340, 10);
    CCID-3 is a standards-track CCID supported by RFC 4342 and RFC 5348.

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

    Gerrit Renker
     
  • Since commit ca109491f612aab5c8152207631c0444f63da97f ("hrtimer:
    removing all ur callback modes") the hrtimer callbacks are processed
    only in hardirq context.

    This patch moves some functionality into tasklets to run in softirq
    context.

    Additionally some duplicated code was removed in bcm_rx_thr_flush()
    and an avoidable memcpy was removed from bcm_rx_handler().

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

    Oliver Hartkopp
     
  • Use kfree_skb instead of kfree for struct sk_buff pointers.

    Signed-off-by: Roel Kluin
    Signed-off-by: David S. Miller

    Roel Kluin
     
  • Signed-off-by: Ilpo Järvinen
    Reported-by: Eric Sesterhenn
    Signed-off-by: David S. Miller

    Ilpo Järvinen
     
  • From: Michael Marineau

    Commit b47300168e770b60ab96c8924854c3b0eb4260eb "Do not fire linkwatch
    events until the device is registered." was made as a workaround for
    drivers that call netif_carrier_off before registering the device.
    Unfortunately this causes these drivers to incorrectly report their
    link status as IF_OPER_UNKNOWN which can falsely set the IFF_RUNNING
    flag when the interface is first brought up. This issues was
    previously pointed out[1] but was dismissed saying that IFF_RUNNING is
    not related to the link status. From my digging IFF_RUNNING, as
    reported to userspace, is based on the link state. It is set based on
    __LINK_STATE_START and IF_OPER_UP or IF_OPER_UNKNOWN. See [2], [3],
    and [4]. (Whether or not the kernel has IFF_RUNNING set in flags is
    not reported to user space so it may well be independent of the link,
    I don't know if and when it may get set.)

    The end result depends slightly depending on the driver. The the two I
    tested were e1000e and b44. With e1000e if the system is booted
    without a network cable attached the interface will falsely report
    RUNNING when it is brought up causing NetworkManager to attempt to
    start it and eventually time out. With b44 when the system is booted
    with a network cable attached and brought up with dhcpcd it will time
    out the first time.

    The attached patch that will still set the operstate variable
    correctly to IF_OPER_UP/DOWN/etc when linkwatch_fire_event is called
    but then return rather than skipping the linkwatch_fire_event call
    entirely as the previous fix did. (sorry it isn't inline, I don't have
    a patch friendly email client at the moment)

    Signed-off-by: David S. Miller

    Michael Marineau
     
  • commit 4dec9b807be757780ca3611a959ac22c28d292a7 ("rfkill: strip pointless
    notifier chain") removed the only user of rfkill_led_trigger() that was not
    guarded by #ifdef CONFIG_RFKILL_LEDS. Therefore, move rfkill_led_trigger()
    completely inside #ifdef CONFIG_RFKILL_LEDS and avoid the compile time
    warning:

    net/rfkill/rfkill.c:59: warning: 'rfkill_led_trigger' defined but not used

    Signed-off-by: Simon Holm Thøgersen
    Signed-off-by: David S. Miller

    Simon Holm Thøgersen
     
  • This patch allows GRO to merge page frags (skb_shinfo(skb)->frags)
    in one skb, rather than using the less efficient frag_list.

    It also adds a new interface, napi_gro_frags to allow drivers
    to inject page frags directly into the stack without allocating
    an skb. This is intended to be the GRO equivalent for LRO's
    lro_receive_frags interface.

    The existing GSO interface can already handle page frags with
    or without an appended frag_list so nothing needs to be changed
    there.

    The merging itself is rather simple. We store any new frag entries
    after the last existing entry, without checking whether the first
    new entry can be merged with the last existing entry. Making this
    check would actually be easy but since no existing driver can
    produce contiguous frags anyway it would just be mental masturbation.

    If the total number of entries would exceed the capacity of a
    single skb, we simply resort to using frag_list as we do now.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • In order to allow GRO packets without frag_list at all, we need to
    store the MSS in the packet itself. The obvious place is gso_size.
    The only thing to watch out for is if the packet ends up not being
    GRO then we need to clear gso_size before pushing the packet into
    the stack.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • Thanks to excellent diagnosis by Eduard Guzovsky.

    The core problem is that on a network with lots of active
    multicast traffic, the neighbour cache can fill up. If
    we try to allocate a new route and thus neighbour cache
    entry, the bog-standard GC attempt the neighbour layer does
    in ineffective because route entries hold a reference
    to the existing neighbour entries and GC can only liberate
    entries with no references.

    IPV4 already has a way to handle this, by doing a route cache
    GC in such situations (when neigh attach returns -ENOBUFS).

    So simply mimick this on the ipv6 side.

    Tested-by: Eduard Guzovsky
    Signed-off-by: David S. Miller

    David S. Miller
     
  • * no allocations
    * return void

    Signed-off-by: Al Viro

    Al Viro
     
  • * don't bother with allocations
    * now that it can't fail, make it return void

    Signed-off-by: Al Viro

    Al Viro
     

03 Jan, 2009

1 commit


01 Jan, 2009

2 commits


31 Dec, 2008

2 commits

  • * git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (70 commits)
    fs/nfs/nfs4proc.c: make nfs4_map_errors() static
    rpc: add service field to new upcall
    rpc: add target field to new upcall
    nfsd: support callbacks with gss flavors
    rpc: allow gss callbacks to client
    rpc: pass target name down to rpc level on callbacks
    nfsd: pass client principal name in rsc downcall
    rpc: implement new upcall
    rpc: store pointer to pipe inode in gss upcall message
    rpc: use count of pipe openers to wait for first open
    rpc: track number of users of the gss upcall pipe
    rpc: call release_pipe only on last close
    rpc: add an rpc_pipe_open method
    rpc: minor gss_alloc_msg cleanup
    rpc: factor out warning code from gss_pipe_destroy_msg
    rpc: remove unnecessary assignment
    NFS: remove unused status from encode routines
    NFS: increment number of operations in each encode routine
    NFS: fix comment placement in nfs4xdr.c
    NFS: fix tabs in nfs4xdr.c
    ...

    Linus Torvalds
     
  • Trond Myklebust
     

30 Dec, 2008

8 commits

  • When we converted the protocol atomic counters such as the orphan
    count and the total socket count deadlocks were introduced due to
    the mismatch in BH status of the spots that used the percpu counter
    operations.

    Based on the diagnosis and patch by Peter Zijlstra, this patch
    fixes these issues by disabling BH where we may be in process
    context.

    Reported-by: Jeff Kirsher
    Tested-by: Ingo Molnar
    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • In future all cpumask ops will only be valid (in general) for bit
    numbers < nr_cpu_ids. So use that instead of NR_CPUS in iterators
    and other comparisons.

    This is always safe: no cpu number can be >= nr_cpu_ids, and
    nr_cpu_ids is initialized to NR_CPUS at boot.

    Signed-off-by: Rusty Russell
    Signed-off-by: Mike Travis
    Acked-by: Ingo Molnar
    Signed-off-by: David S. Miller

    Rusty Russell
     
  • cls_cgroup can't be compiled as a module, since it's not supported by
    cgroup.

    Signed-off-by: Li Zefan
    Signed-off-by: David S. Miller

    Li Zefan
     
  • - It's better to use container_of() instead of casting cgroup_subsys_state *
    to cgroup_cls_state *.
    - Add helper function task_cls_state().
    - Rename net_cls_state() to cgrp_cls_state().

    Signed-off-by: Li Zefan
    Signed-off-by: David S. Miller

    Li Zefan
     
  • When removing a cgroup, an oops was triggered immediately. The cause
    is wrong kfree() in cgrp_destroy().

    Signed-off-by: Li Zefan
    Signed-off-by: David S. Miller

    Li Zefan
     
  • Acked-by: Graeme Fowler
    Signed-off-by: Simon Horman
    Signed-off-by: David S. Miller

    Simon Horman
     
  • During network namespace teardown we either move or delete
    all of the network devices associated with a network namespace.
    In the case of veth devices deleting one will also delete it's
    pair device. If both devices are in the same network namespace
    then for_each_netdev_safe is insufficient as next may point
    to the second veth device we have deleted.

    To avoid problems I do what we do in __rtnl_kill_links and
    restart the scan of the device list, after we have deleted
    a device.

    Currently dev_change_netnamespace does not appear to suffer from
    this problem, but wireless devices are also paired and likely
    should be moved between network namespaces together. So I have
    errored on the side of caution and restart the scan of the network
    devices in that case as well.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: David S. Miller

    Eric W. Biederman
     
  • No reason to roll our own here.

    Signed-off-by: Rusty Russell
    Signed-off-by: David S. Miller

    Rusty Russell