Merge tag 'v3.10.24' into HEAD
Ajay Nandakumar [Mon, 16 Dec 2013 13:41:53 +0000 (18:41 +0530)]
This is the 3.10.24 stable release

Change-Id: Ibd2734f93d44385ab86867272a1359158635133b

52 files changed:
1  2 
Makefile
arch/arc/mm/fault.c
arch/arm/include/asm/pgtable.h
arch/arm/kernel/entry-armv.S
arch/arm/mm/pgd.c
drivers/ata/libata-eh.c
drivers/hid/Kconfig
drivers/hid/hid-core.c
drivers/hid/hid-ids.h
drivers/hid/hid-multitouch.c
drivers/input/Kconfig
drivers/input/evdev.c
drivers/input/keyboard/Kconfig
drivers/mmc/card/block.c
drivers/net/ethernet/realtek/r8169.c
drivers/net/tun.c
drivers/net/usb/usbnet.c
drivers/staging/ozwpan/ozcdev.c
drivers/usb/class/cdc-acm.c
drivers/usb/core/hub.c
fs/nfs/nfs4proc.c
include/linux/genalloc.h
include/linux/mod_devicetable.h
include/linux/sched.h
include/net/ipv6.h
include/net/sock.h
include/net/tcp.h
kernel/cgroup.c
kernel/irq/pm.c
kernel/time/alarmtimer.c
kernel/time/timekeeping.c
kernel/trace/trace.c
lib/genalloc.c
mm/memory.c
mm/vmalloc.c
net/bluetooth/af_bluetooth.c
net/bluetooth/sco.c
net/core/sock.c
net/ipv4/ping.c
net/ipv4/tcp.c
net/ipv4/tcp_ipv4.c
net/ipv4/udp.c
net/ipv6/udp.c
net/mac80211/ieee80211_i.h
net/mac80211/scan.c
net/netlink/af_netlink.c
net/socket.c
net/unix/af_unix.c
net/wireless/scan.c
sound/pci/hda/hda_codec.c
sound/pci/hda/patch_hdmi.c
sound/soc/soc-dapm.c

diff --cc Makefile
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -297,9 -291,11 +299,13 @@@ static int evdev_release(struct inode *
        mutex_unlock(&evdev->mutex);
  
        evdev_detach_client(evdev, client);
 +      if (client->use_wake_lock)
 +              wake_lock_destroy(&client->wake_lock);
-       kfree(client);
+       if (is_vmalloc_addr(client))
+               vfree(client);
+       else
+               kfree(client);
  
        evdev_close_device(evdev);
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc kernel/cgroup.c
@@@ -2011,8 -2019,7 +2019,7 @@@ static int cgroup_attach_task(struct cg
                retval = flex_array_put(group, i, &ent, GFP_ATOMIC);
                BUG_ON(retval != 0);
                i++;
 -      next:
 +next:
                if (!threadgroup)
                        break;
        } while_each_thread(leader, tsk);
diff --cc kernel/irq/pm.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc lib/genalloc.c
@@@ -289,16 -288,7 +294,16 @@@ unsigned long gen_pool_alloc_addr(struc
                if (size > atomic_read(&chunk->avail))
                        continue;
  
-               end_bit = (chunk->end_addr - chunk->start_addr) >> order;
+               end_bit = chunk_size(chunk) >> order;
 +              if (alloc_addr) {
 +                      if (alloc_addr < chunk->start_addr ||
 +                              alloc_addr >= chunk->end_addr)
 +                              continue;
 +                      if (alloc_addr + size > chunk->end_addr)
 +                              return 0;
 +                      alloc_bit_needed = start_bit =
 +                              (alloc_addr - chunk->start_addr) >> order;
 +              }
  retry:
                start_bit = pool->algo(chunk->bits, end_bit, start_bit, nbits,
                                pool->data);
diff --cc mm/memory.c
Simple merge
diff --cc mm/vmalloc.c
Simple merge
Simple merge
Simple merge
diff --cc net/core/sock.c
Simple merge
diff --cc net/ipv4/ping.c
@@@ -844,22 -635,8 +844,22 @@@ int ping_recvmsg(struct kiocb *iocb, st
        if (flags & MSG_OOB)
                goto out;
  
 -      if (flags & MSG_ERRQUEUE)
 -              return ip_recv_error(sk, msg, len, addr_len);
 +      if (addr_len) {
 +              if (family == AF_INET)
 +                      *addr_len = sizeof(*sin);
 +              else if (family == AF_INET6 && addr_len)
 +                      *addr_len = sizeof(*sin6);
 +      }
 +
 +      if (flags & MSG_ERRQUEUE) {
 +              if (family == AF_INET) {
-                       return ip_recv_error(sk, msg, len);
++                      return ip_recv_error(sk, msg, len, addr_len);
 +#if IS_ENABLED(CONFIG_IPV6)
 +              } else if (family == AF_INET6) {
 +                      return pingv6_ops.ipv6_recv_error(sk, msg, len);
 +#endif
 +              }
 +      }
  
        skb = skb_recv_datagram(sk, flags, noblock, &err);
        if (!skb)
  
        sock_recv_timestamp(msg, sk, skb);
  
 +      /* Copy the address and add cmsg data. */
 +      if (family == AF_INET) {
 +              sin = (struct sockaddr_in *) msg->msg_name;
-               sin->sin_family = AF_INET;
-               sin->sin_port = 0 /* skb->h.uh->source */;
-               sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
-               memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
++
+       /* Copy the address. */
 -      if (msg->msg_name) {
 -              struct sockaddr_in *sin = (struct sockaddr_in *)msg->msg_name;
++              if (msg->msg_name) {
++                      struct sockaddr_in *sin = (struct sockaddr_in *)msg->msg_name;
++
++                      sin->sin_family = AF_INET;
++                      sin->sin_port = 0 /* skb->h.uh->source */;
++                      sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
++                      memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
++                      *addr_len = sizeof(*sin);
++              }
  
 -              sin->sin_family = AF_INET;
 -              sin->sin_port = 0 /* skb->h.uh->source */;
 -              sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
 -              memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
 -              *addr_len = sizeof(*sin);
 +              if (isk->cmsg_flags)
 +                      ip_cmsg_recv(msg, skb);
 +
 +#if IS_ENABLED(CONFIG_IPV6)
 +      } else if (family == AF_INET6) {
 +              struct ipv6_pinfo *np = inet6_sk(sk);
 +              struct ipv6hdr *ip6 = ipv6_hdr(skb);
 +              sin6 = (struct sockaddr_in6 *) msg->msg_name;
 +              sin6->sin6_family = AF_INET6;
 +              sin6->sin6_port = 0;
 +              sin6->sin6_addr = ip6->saddr;
 +
 +              sin6->sin6_flowinfo = 0;
 +              if (np->sndflow)
 +                      sin6->sin6_flowinfo =
 +                              *(__be32 *)ip6 & IPV6_FLOWINFO_MASK;
 +
 +              sin6->sin6_scope_id = ipv6_iface_scope_id(&sin6->sin6_addr,
 +                                                        IP6CB(skb)->iif);
 +
 +              if (inet6_sk(sk)->rxopt.all)
 +                      pingv6_ops.ip6_datagram_recv_ctl(sk, msg, skb);
 +#endif
 +      } else {
 +              BUG();
        }
 -      if (isk->cmsg_flags)
 -              ip_cmsg_recv(msg, skb);
 +
        err = copied;
  
  done:
diff --cc net/ipv4/tcp.c
Simple merge
Simple merge
diff --cc net/ipv4/udp.c
Simple merge
diff --cc net/ipv6/udp.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/socket.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge