]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
authorDavid S. Miller <davem@davemloft.net>
Thu, 3 Apr 2008 21:33:42 +0000 (14:33 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 3 Apr 2008 21:33:42 +0000 (14:33 -0700)
1  2 
Documentation/feature-removal-schedule.txt
MAINTAINERS
lib/kobject_uevent.c
net/core/sock.c
net/rxrpc/ar-internal.h

index 1d171fe5fcdc7a1dc76509987fbfc0769a5f1d20,bf0e3df8e7a1039f8041214118c0e9377b9d85b2..ee3cc8b8c84ed991967637684b7996fe5c72d898
@@@ -172,16 -172,6 +172,6 @@@ Who:      Len Brown <len.brown@intel.com
  
  ---------------------------
  
- What: ide-tape driver
- When: July 2008
- Files:        drivers/ide/ide-tape.c
- Why:  This driver might not have any users anymore and maintaining it for no
-       reason is an effort no one wants to make.
- Who:  Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>, Borislav Petkov
-       <petkovbb@googlemail.com>
- ---------------------------
  What: libata spindown skipping and warning
  When: Dec 2008
  Why:  Some halt(8) implementations synchronize caches for and spin
@@@ -213,6 -203,14 +203,6 @@@ Who:  linuxppc-dev@ozlabs.or
  
  ---------------------------
  
 -What:   sk98lin network driver
 -When:   Feburary 2008
 -Why:    In kernel tree version of driver is unmaintained. Sk98lin driver
 -      replaced by the skge driver. 
 -Who:    Stephen Hemminger <shemminger@linux-foundation.org>
 -
 ----------------------------
 -
  What: i386/x86_64 bzImage symlinks
  When: April 2008
  
@@@ -223,6 -221,8 +213,6 @@@ Who:       Thomas Gleixner <tglx@linutronix.d
  
  ---------------------------
  
 ----------------------------
 -
  What: i2c-i810, i2c-prosavage and i2c-savage4
  When: May 2008
  Why:  These drivers are superseded by i810fb, intelfb and savagefb.
@@@ -230,6 -230,33 +220,6 @@@ Who:      Jean Delvare <khali@linux-fr.org
  
  ---------------------------
  
 -What: bcm43xx wireless network driver
 -When: 2.6.26
 -Files:        drivers/net/wireless/bcm43xx
 -Why:  This driver's functionality has been replaced by the
 -      mac80211-based b43 and b43legacy drivers.
 -Who:  John W. Linville <linville@tuxdriver.com>
 -
 ----------------------------
 -
 -What: ieee80211 softmac wireless networking component
 -When: 2.6.26 (or after removal of bcm43xx and port of zd1211rw to mac80211)
 -Files:        net/ieee80211/softmac
 -Why:  No in-kernel drivers will depend on it any longer.
 -Who:  John W. Linville <linville@tuxdriver.com>
 -
 ----------------------------
 -
 -What: rc80211-simple rate control algorithm for mac80211
 -When: 2.6.26
 -Files:        net/mac80211/rc80211-simple.c
 -Why:  This algorithm was provided for reference but always exhibited bad
 -      responsiveness and performance and has some serious flaws. It has been
 -      replaced by rc80211-pid.
 -Who:  Stefano Brivio <stefano.brivio@polimi.it>
 -
 ----------------------------
 -
  What (Why):
        - include/linux/netfilter_ipv4/ipt_TOS.h ipt_tos.h header files
          (superseded by xt_TOS/xt_tos target & match)
diff --combined MAINTAINERS
index fc7365cdc8dacd77a6949b4616c1f6ebba1d74e0,90dcbbcad91c8541326d7179e7bc313880b8bf10..c6ade7e777f3544e0b7bf8bd5b03015100afebfb
@@@ -163,6 -163,12 +163,12 @@@ M:       A2232@gmx.ne
  L:    linux-m68k@lists.linux-m68k.org
  S:    Maintained
  
+ AFS FILESYSTEM & AF_RXRPC SOCKET DOMAIN
+ P:    David Howells
+ M:    dhowells@redhat.com
+ L:    linux-afs@lists.infradead.org
+ S:    Supported
  AIO
  P:    Benjamin LaHaise
  M:    bcrl@kvack.org
@@@ -452,7 -458,7 +458,7 @@@ S: Maintaine
  
  ARM/ATMEL AT91RM9200 ARM ARCHITECTURE
  P:      Andrew Victor
- M:      andrew@sanpeople.com
+ M:      linux@maxim.org.za
  L:      linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
  W:      http://maxim.org.za/at91_26.html
  S:      Maintained
@@@ -834,6 -840,15 +840,6 @@@ L:        linux-wireless@vger.kernel.or
  W:    http://linuxwireless.org/en/users/Drivers/b43
  S:    Maintained
  
 -BCM43XX WIRELESS DRIVER (SOFTMAC BASED VERSION)
 -P:    Larry Finger
 -M:    Larry.Finger@lwfinger.net
 -P:    Stefano Brivio
 -M:    stefano.brivio@polimi.it
 -L:    linux-wireless@vger.kernel.org
 -W:    http://bcm43xx.berlios.de/
 -S:    Obsolete
 -
  BEFS FILE SYSTEM
  P:    Sergey S. Kostyliov
  M:    rathamahata@php4.ru
@@@ -2305,14 -2320,14 +2311,14 @@@ L:   kexec@lists.infradead.or
  S:    Maintained
  
  KPROBES
- P:    Prasanna S Panchamukhi
- M:    prasanna@in.ibm.com
  P:    Ananth N Mavinakayanahalli
  M:    ananth@in.ibm.com
  P:    Anil S Keshavamurthy
  M:    anil.s.keshavamurthy@intel.com
  P:    David S. Miller
  M:    davem@davemloft.net
+ P:    Masami Hiramatsu
+ M:    mhiramat@redhat.com
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  
@@@ -2926,9 -2941,9 +2932,9 @@@ S:      Maintaine
  
  ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
  P:    Mark Fasheh
- M:    mark.fasheh@oracle.com
- P:    Kurt Hackel
- M:    kurt.hackel@oracle.com
+ M:    mfasheh@suse.com
+ P:    Joel Becker
+ M:    joel.becker@oracle.com
  L:    ocfs2-devel@oss.oracle.com
  W:    http://oss.oracle.com/projects/ocfs2/
  S:    Supported
@@@ -3583,6 -3598,12 +3589,6 @@@ M:     mhoffman@lightlink.co
  L:    lm-sensors@lm-sensors.org
  S:    Maintained
  
 -SOFTMAC LAYER (IEEE 802.11)
 -P:    Daniel Drake
 -M:    dsd@gentoo.org
 -L:    linux-wireless@vger.kernel.org
 -S:    Obsolete
 -
  SOFTWARE RAID (Multiple Disks) SUPPORT
  P:    Ingo Molnar
  M:    mingo@redhat.com
diff --combined lib/kobject_uevent.c
index b06185ed18959941de78c299ce3a8aaac44a2cb2,5b6d7f6956b98efd61d781b66675a8a6ede9f78d..9fb6b86cf6b15970ede185e8233a975dd4049d8a
   */
  
  #include <linux/spinlock.h>
 +#include <linux/string.h>
 +#include <linux/kobject.h>
 +#include <linux/module.h>
 +
  #include <linux/socket.h>
  #include <linux/skbuff.h>
  #include <linux/netlink.h>
 -#include <linux/string.h>
 -#include <linux/kobject.h>
  #include <net/sock.h>
  
  
@@@ -57,7 -55,7 +57,7 @@@ int kobject_action_type(const char *buf
        enum kobject_action action;
        int ret = -EINVAL;
  
-       if (count && buf[count-1] == '\n')
+       if (count && (buf[count-1] == '\n' || buf[count-1] == '\0'))
                count--;
  
        if (!count)
diff --combined net/core/sock.c
index 83e11f7260ffb1c3c3bd28c7c578472f6dfdf631,2654c147c004a736ed0693f7b2b60e915b7505ea..f2ccb1620dc469ab427fcc93d2cd71bf68d3e3b1
@@@ -372,7 -372,7 +372,7 @@@ static int sock_bindtodevice(struct soc
  {
        int ret = -ENOPROTOOPT;
  #ifdef CONFIG_NETDEVICES
 -      struct net *net = sk->sk_net;
 +      struct net *net = sock_net(sk);
        char devname[IFNAMSIZ];
        int index;
  
@@@ -958,7 -958,7 +958,7 @@@ struct sock *sk_alloc(struct net *net, 
                 */
                sk->sk_prot = sk->sk_prot_creator = prot;
                sock_lock_init(sk);
 -              sk->sk_net = get_net(net);
 +              sock_net_set(sk, get_net(net));
        }
  
        return sk;
@@@ -981,31 -981,12 +981,31 @@@ void sk_free(struct sock *sk
  
        if (atomic_read(&sk->sk_omem_alloc))
                printk(KERN_DEBUG "%s: optmem leakage (%d bytes) detected.\n",
 -                     __FUNCTION__, atomic_read(&sk->sk_omem_alloc));
 +                     __func__, atomic_read(&sk->sk_omem_alloc));
  
 -      put_net(sk->sk_net);
 +      put_net(sock_net(sk));
        sk_prot_free(sk->sk_prot_creator, sk);
  }
  
 +/*
 + * Last sock_put should drop referrence to sk->sk_net. It has already
 + * been dropped in sk_change_net. Taking referrence to stopping namespace
 + * is not an option.
 + * Take referrence to a socket to remove it from hash _alive_ and after that
 + * destroy it in the context of init_net.
 + */
 +void sk_release_kernel(struct sock *sk)
 +{
 +      if (sk == NULL || sk->sk_socket == NULL)
 +              return;
 +
 +      sock_hold(sk);
 +      sock_release(sk->sk_socket);
 +      sock_net_set(sk, get_net(&init_net));
 +      sock_put(sk);
 +}
 +EXPORT_SYMBOL(sk_release_kernel);
 +
  struct sock *sk_clone(const struct sock *sk, const gfp_t priority)
  {
        struct sock *newsk;
                sock_copy(newsk, sk);
  
                /* SANITY */
 -              get_net(newsk->sk_net);
 +              get_net(sock_net(newsk));
                sk_node_init(&newsk->sk_node);
                sock_lock_init(newsk);
                bh_lock_sock(newsk);
@@@ -1095,12 -1076,10 +1095,12 @@@ void sk_setup_caps(struct sock *sk, str
        if (sk->sk_route_caps & NETIF_F_GSO)
                sk->sk_route_caps |= NETIF_F_GSO_SOFTWARE;
        if (sk_can_gso(sk)) {
 -              if (dst->header_len)
 +              if (dst->header_len) {
                        sk->sk_route_caps &= ~NETIF_F_GSO_MASK;
 -              else
 +              } else {
                        sk->sk_route_caps |= NETIF_F_SG | NETIF_F_HW_CSUM;
 +                      sk->sk_gso_max_size = dst->dev->gso_max_size;
 +              }
        }
  }
  EXPORT_SYMBOL_GPL(sk_setup_caps);
@@@ -1642,7 -1621,7 +1642,7 @@@ static void sock_def_readable(struct so
  {
        read_lock(&sk->sk_callback_lock);
        if (sk->sk_sleep && waitqueue_active(sk->sk_sleep))
-               wake_up_interruptible(sk->sk_sleep);
+               wake_up_interruptible_sync(sk->sk_sleep);
        sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN);
        read_unlock(&sk->sk_callback_lock);
  }
@@@ -1656,7 -1635,7 +1656,7 @@@ static void sock_def_write_space(struc
         */
        if ((atomic_read(&sk->sk_wmem_alloc) << 1) <= sk->sk_sndbuf) {
                if (sk->sk_sleep && waitqueue_active(sk->sk_sleep))
-                       wake_up_interruptible(sk->sk_sleep);
+                       wake_up_interruptible_sync(sk->sk_sleep);
  
                /* Should agree with poll, otherwise some programs break */
                if (sock_writeable(sk))
@@@ -1940,113 -1919,16 +1940,113 @@@ EXPORT_SYMBOL(sk_common_release)
  static DEFINE_RWLOCK(proto_list_lock);
  static LIST_HEAD(proto_list);
  
 +#ifdef CONFIG_PROC_FS
 +#define PROTO_INUSE_NR        64      /* should be enough for the first time */
 +struct prot_inuse {
 +      int val[PROTO_INUSE_NR];
 +};
 +
 +static DECLARE_BITMAP(proto_inuse_idx, PROTO_INUSE_NR);
 +
 +#ifdef CONFIG_NET_NS
 +void sock_prot_inuse_add(struct net *net, struct proto *prot, int val)
 +{
 +      int cpu = smp_processor_id();
 +      per_cpu_ptr(net->core.inuse, cpu)->val[prot->inuse_idx] += val;
 +}
 +EXPORT_SYMBOL_GPL(sock_prot_inuse_add);
 +
 +int sock_prot_inuse_get(struct net *net, struct proto *prot)
 +{
 +      int cpu, idx = prot->inuse_idx;
 +      int res = 0;
 +
 +      for_each_possible_cpu(cpu)
 +              res += per_cpu_ptr(net->core.inuse, cpu)->val[idx];
 +
 +      return res >= 0 ? res : 0;
 +}
 +EXPORT_SYMBOL_GPL(sock_prot_inuse_get);
 +
 +static int sock_inuse_init_net(struct net *net)
 +{
 +      net->core.inuse = alloc_percpu(struct prot_inuse);
 +      return net->core.inuse ? 0 : -ENOMEM;
 +}
 +
 +static void sock_inuse_exit_net(struct net *net)
 +{
 +      free_percpu(net->core.inuse);
 +}
 +
 +static struct pernet_operations net_inuse_ops = {
 +      .init = sock_inuse_init_net,
 +      .exit = sock_inuse_exit_net,
 +};
 +
 +static __init int net_inuse_init(void)
 +{
 +      if (register_pernet_subsys(&net_inuse_ops))
 +              panic("Cannot initialize net inuse counters");
 +
 +      return 0;
 +}
 +
 +core_initcall(net_inuse_init);
 +#else
 +static DEFINE_PER_CPU(struct prot_inuse, prot_inuse);
 +
 +void sock_prot_inuse_add(struct net *net, struct proto *prot, int val)
 +{
 +      __get_cpu_var(prot_inuse).val[prot->inuse_idx] += val;
 +}
 +EXPORT_SYMBOL_GPL(sock_prot_inuse_add);
 +
 +int sock_prot_inuse_get(struct net *net, struct proto *prot)
 +{
 +      int cpu, idx = prot->inuse_idx;
 +      int res = 0;
 +
 +      for_each_possible_cpu(cpu)
 +              res += per_cpu(prot_inuse, cpu).val[idx];
 +
 +      return res >= 0 ? res : 0;
 +}
 +EXPORT_SYMBOL_GPL(sock_prot_inuse_get);
 +#endif
 +
 +static void assign_proto_idx(struct proto *prot)
 +{
 +      prot->inuse_idx = find_first_zero_bit(proto_inuse_idx, PROTO_INUSE_NR);
 +
 +      if (unlikely(prot->inuse_idx == PROTO_INUSE_NR - 1)) {
 +              printk(KERN_ERR "PROTO_INUSE_NR exhausted\n");
 +              return;
 +      }
 +
 +      set_bit(prot->inuse_idx, proto_inuse_idx);
 +}
 +
 +static void release_proto_idx(struct proto *prot)
 +{
 +      if (prot->inuse_idx != PROTO_INUSE_NR - 1)
 +              clear_bit(prot->inuse_idx, proto_inuse_idx);
 +}
 +#else
 +static inline void assign_proto_idx(struct proto *prot)
 +{
 +}
 +
 +static inline void release_proto_idx(struct proto *prot)
 +{
 +}
 +#endif
 +
  int proto_register(struct proto *prot, int alloc_slab)
  {
        char *request_sock_slab_name = NULL;
        char *timewait_sock_slab_name;
  
 -      if (sock_prot_inuse_init(prot) != 0) {
 -              printk(KERN_CRIT "%s: Can't alloc inuse counters!\n", prot->name);
 -              goto out;
 -      }
 -
        if (alloc_slab) {
                prot->slab = kmem_cache_create(prot->name, prot->obj_size, 0,
                                               SLAB_HWCACHE_ALIGN, NULL);
                if (prot->slab == NULL) {
                        printk(KERN_CRIT "%s: Can't create sock SLAB cache!\n",
                               prot->name);
 -                      goto out_free_inuse;
 +                      goto out;
                }
  
                if (prot->rsk_prot != NULL) {
  
        write_lock(&proto_list_lock);
        list_add(&prot->node, &proto_list);
 +      assign_proto_idx(prot);
        write_unlock(&proto_list_lock);
        return 0;
  
@@@ -2113,6 -1994,8 +2113,6 @@@ out_free_request_sock_slab_name
  out_free_sock_slab:
        kmem_cache_destroy(prot->slab);
        prot->slab = NULL;
 -out_free_inuse:
 -      sock_prot_inuse_free(prot);
  out:
        return -ENOBUFS;
  }
@@@ -2122,10 -2005,11 +2122,10 @@@ EXPORT_SYMBOL(proto_register)
  void proto_unregister(struct proto *prot)
  {
        write_lock(&proto_list_lock);
 +      release_proto_idx(prot);
        list_del(&prot->node);
        write_unlock(&proto_list_lock);
  
 -      sock_prot_inuse_free(prot);
 -
        if (prot->slab != NULL) {
                kmem_cache_destroy(prot->slab);
                prot->slab = NULL;
diff --combined net/rxrpc/ar-internal.h
index e58cc65728b506318400377494e60b23901b30ed,126ca777b410abc3228eb465e1e33589ec113c04..c89b797b221da9f7d23e3e0098d55062f7a61f2d
@@@ -23,7 -23,7 +23,7 @@@
  struct rxrpc_crypt {
        union {
                u8      x[FCRYPT_BSIZE];
-               u32     n[2];
+               __be32  n[2];
        };
  } __attribute__((aligned(8)));
  
@@@ -619,8 -619,8 +619,8 @@@ void _dbprintk(const char *fmt, ...
  {
  }
  
 -#define kenter(FMT,...)       dbgprintk("==> %s("FMT")",__FUNCTION__ ,##__VA_ARGS__)
 -#define kleave(FMT,...)       dbgprintk("<== %s()"FMT"",__FUNCTION__ ,##__VA_ARGS__)
 +#define kenter(FMT,...)       dbgprintk("==> %s("FMT")",__func__ ,##__VA_ARGS__)
 +#define kleave(FMT,...)       dbgprintk("<== %s()"FMT"",__func__ ,##__VA_ARGS__)
  #define kdebug(FMT,...)       dbgprintk("    "FMT ,##__VA_ARGS__)
  #define kproto(FMT,...)       dbgprintk("### "FMT ,##__VA_ARGS__)
  #define knet(FMT,...) dbgprintk("@@@ "FMT ,##__VA_ARGS__)
@@@ -671,8 -671,8 +671,8 @@@ do {                                                       
  } while (0)
  
  #else
 -#define _enter(FMT,...)       _dbprintk("==> %s("FMT")",__FUNCTION__ ,##__VA_ARGS__)
 -#define _leave(FMT,...)       _dbprintk("<== %s()"FMT"",__FUNCTION__ ,##__VA_ARGS__)
 +#define _enter(FMT,...)       _dbprintk("==> %s("FMT")",__func__ ,##__VA_ARGS__)
 +#define _leave(FMT,...)       _dbprintk("<== %s()"FMT"",__func__ ,##__VA_ARGS__)
  #define _debug(FMT,...)       _dbprintk("    "FMT ,##__VA_ARGS__)
  #define _proto(FMT,...)       _dbprintk("### "FMT ,##__VA_ARGS__)
  #define _net(FMT,...) _dbprintk("@@@ "FMT ,##__VA_ARGS__)