[kernel] r18929 - in dists/trunk/linux-2.6: . debian debian/config/armhf debian/config/mips debian/config/mipsel debian/config/s390 debian/patches/bugfix/all debian/patches/bugfix/arm debian/patches/debian debian/patches/features/x86/hyperv debian/patches/series

Ben Hutchings benh at alioth.debian.org
Sun Apr 15 15:35:35 UTC 2012


Author: benh
Date: Sun Apr 15 15:35:34 2012
New Revision: 18929

Log:
Merge changes from sid branch up to 3.2.15-1

Added:
   dists/trunk/linux-2.6/debian/patches/bugfix/all/hugetlb-fix-race-condition-in-hugetlb_fault.patch
      - copied unchanged from r18927, dists/sid/linux-2.6/debian/patches/bugfix/all/hugetlb-fix-race-condition-in-hugetlb_fault.patch
   dists/trunk/linux-2.6/debian/patches/bugfix/all/net-fix-proc-net-dev-regression.patch
      - copied unchanged from r18927, dists/sid/linux-2.6/debian/patches/bugfix/all/net-fix-proc-net-dev-regression.patch
   dists/trunk/linux-2.6/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch
      - copied unchanged from r18927, dists/sid/linux-2.6/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch
   dists/trunk/linux-2.6/debian/patches/debian/nls-Avoid-ABI-change-from-improvement-to-utf8s_to_ut.patch
      - copied unchanged from r18927, dists/sid/linux-2.6/debian/patches/debian/nls-Avoid-ABI-change-from-improvement-to-utf8s_to_ut.patch
   dists/trunk/linux-2.6/debian/patches/features/x86/hyperv/
      - copied from r18927, dists/sid/linux-2.6/debian/patches/features/x86/hyperv/
Modified:
   dists/trunk/linux-2.6/   (props changed)
   dists/trunk/linux-2.6/debian/changelog
   dists/trunk/linux-2.6/debian/config/armhf/config.mx5
   dists/trunk/linux-2.6/debian/config/mips/config.octeon
   dists/trunk/linux-2.6/debian/config/mipsel/config.loongson-2f
   dists/trunk/linux-2.6/debian/config/s390/config
   dists/trunk/linux-2.6/debian/patches/series/base

Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog	Sun Apr 15 15:09:29 2012	(r18928)
+++ dists/trunk/linux-2.6/debian/changelog	Sun Apr 15 15:35:34 2012	(r18929)
@@ -30,6 +30,28 @@
 
  -- Ben Hutchings <ben at decadent.org.uk>  Sun, 04 Mar 2012 20:27:42 +0000
 
+linux-2.6 (3.2.15-1) unstable; urgency=high
+
+  * New upstream stable update:
+    http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.15
+    - drm/radeon/kms: fix fans after resume (Closes: #596741)
+    - sysctl: fix write access to dmesg_restrict/kptr_restrict
+    - [x86] PCI: use host bridge _CRS info on MSI MS-7253 (Closes: #619034)
+    - nfs: Fix length of buffer copied in __nfs4_get_acl_uncached
+    - [x86] ioat: fix size of 'completion' for Xen (Closes: #660554)
+    - cred: copy_process() should clear child->replacement_session_keyring
+
+  [ Ben Hutchings ]
+  * net: fix /proc/net/dev regression (Closes: #659499)
+  * [armel/orion5x] Fix GPIO enable bits for MPP9 (Closes: #667446)
+  * [x86] drm/i915: mask transcoder select bits before setting them on LVDS
+  * [armhf/mx5,mipsel/loongson-2f] input: Enable INPUT_TOUCHSCREEN
+    (Closes: #668036)
+  * [x86] hv: Update all Hyper-V drivers to 3.4-rc1 (Closes: #661318)
+  * hugetlb: fix race condition in hugetlb_fault()
+
+ -- Ben Hutchings <ben at decadent.org.uk>  Sat, 14 Apr 2012 18:23:44 +0100
+
 linux-2.6 (3.2.14-1) unstable; urgency=low
 
   * New upstream stable update:

Modified: dists/trunk/linux-2.6/debian/config/armhf/config.mx5
==============================================================================
--- dists/trunk/linux-2.6/debian/config/armhf/config.mx5	Sun Apr 15 15:09:29 2012	(r18928)
+++ dists/trunk/linux-2.6/debian/config/armhf/config.mx5	Sun Apr 15 15:35:34 2012	(r18929)
@@ -67,6 +67,11 @@
 CONFIG_I2C_IMX=y
 
 ##
+## file: drivers/input/touchscreen/Kconfig
+##
+CONFIG_INPUT_TOUCHSCREEN=y
+
+##
 ## file: drivers/leds/Kconfig
 ##
 CONFIG_LEDS_GPIO=y

Modified: dists/trunk/linux-2.6/debian/config/mips/config.octeon
==============================================================================
--- dists/trunk/linux-2.6/debian/config/mips/config.octeon	Sun Apr 15 15:09:29 2012	(r18928)
+++ dists/trunk/linux-2.6/debian/config/mips/config.octeon	Sun Apr 15 15:35:34 2012	(r18929)
@@ -64,6 +64,11 @@
 CONFIG_MOUSE_PS2=y
 
 ##
+## file: drivers/input/touchscreen/Kconfig
+##
+# CONFIG_INPUT_TOUCHSCREEN is not set
+
+##
 ## file: drivers/message/fusion/Kconfig
 ##
 CONFIG_FUSION=y

Modified: dists/trunk/linux-2.6/debian/config/mipsel/config.loongson-2f
==============================================================================
--- dists/trunk/linux-2.6/debian/config/mipsel/config.loongson-2f	Sun Apr 15 15:09:29 2012	(r18928)
+++ dists/trunk/linux-2.6/debian/config/mipsel/config.loongson-2f	Sun Apr 15 15:35:34 2012	(r18929)
@@ -44,6 +44,11 @@
 ## end choice
 
 ##
+## file: drivers/input/touchscreen/Kconfig
+##
+CONFIG_INPUT_TOUCHSCREEN=y
+
+##
 ## file: drivers/net/ethernet/amd/Kconfig
 ##
 # CONFIG_PCNET32 is not set

Modified: dists/trunk/linux-2.6/debian/config/s390/config
==============================================================================
--- dists/trunk/linux-2.6/debian/config/s390/config	Sun Apr 15 15:09:29 2012	(r18928)
+++ dists/trunk/linux-2.6/debian/config/s390/config	Sun Apr 15 15:35:34 2012	(r18929)
@@ -50,6 +50,11 @@
 CONFIG_S390_PRNG=m
 
 ##
+## file: drivers/input/touchscreen/Kconfig
+##
+# CONFIG_INPUT_TOUCHSCREEN is not set
+
+##
 ## file: drivers/memstick/Kconfig
 ##
 # CONFIG_MEMSTICK is not set

Copied: dists/trunk/linux-2.6/debian/patches/bugfix/all/hugetlb-fix-race-condition-in-hugetlb_fault.patch (from r18927, dists/sid/linux-2.6/debian/patches/bugfix/all/hugetlb-fix-race-condition-in-hugetlb_fault.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/all/hugetlb-fix-race-condition-in-hugetlb_fault.patch	Sun Apr 15 15:35:34 2012	(r18929, copy of r18927, dists/sid/linux-2.6/debian/patches/bugfix/all/hugetlb-fix-race-condition-in-hugetlb_fault.patch)
@@ -0,0 +1,88 @@
+From: Chris Metcalf <cmetcalf at tilera.com>
+Date: Thu, 12 Apr 2012 12:49:15 -0700
+Subject: [PATCH] hugetlb: fix race condition in hugetlb_fault()
+
+commit 66aebce747eaf9bc456bf1f1b217d8db843031d0 upstream.
+
+The race is as follows:
+
+Suppose a multi-threaded task forks a new process (on cpu A), thus
+bumping up the ref count on all the pages.  While the fork is occurring
+(and thus we have marked all the PTEs as read-only), another thread in
+the original process (on cpu B) tries to write to a huge page, taking an
+access violation from the write-protect and calling hugetlb_cow().  Now,
+suppose the fork() fails.  It will undo the COW and decrement the ref
+count on the pages, so the ref count on the huge page drops back to 1.
+Meanwhile hugetlb_cow() also decrements the ref count by one on the
+original page, since the original address space doesn't need it any
+more, having copied a new page to replace the original page.  This
+leaves the ref count at zero, and when we call unlock_page(), we panic.
+
+	fork on CPU A				fault on CPU B
+	=============				==============
+	...
+	down_write(&parent->mmap_sem);
+	down_write_nested(&child->mmap_sem);
+	...
+	while duplicating vmas
+		if error
+			break;
+	...
+	up_write(&child->mmap_sem);
+	up_write(&parent->mmap_sem);		...
+						down_read(&parent->mmap_sem);
+						...
+						lock_page(page);
+						handle COW
+						page_mapcount(old_page) == 2
+						alloc and prepare new_page
+	...
+	handle error
+	page_remove_rmap(page);
+	put_page(page);
+	...
+						fold new_page into pte
+						page_remove_rmap(page);
+						put_page(page);
+						...
+				oops ==>	unlock_page(page);
+						up_read(&parent->mmap_sem);
+
+The solution is to take an extra reference to the page while we are
+holding the lock on it.
+
+Signed-off-by: Chris Metcalf <cmetcalf at tilera.com>
+Cc: Hillf Danton <dhillf at gmail.com>
+Cc: Michal Hocko <mhocko at suse.cz>
+Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu at jp.fujitsu.com>
+Cc: Hugh Dickins <hughd at google.com>
+Cc: <stable at vger.kernel.org>
+Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+---
+ mm/hugetlb.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/mm/hugetlb.c b/mm/hugetlb.c
+index b8ce6f4..cd65cb1 100644
+--- a/mm/hugetlb.c
++++ b/mm/hugetlb.c
+@@ -2791,6 +2791,7 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+ 	 * so no worry about deadlock.
+ 	 */
+ 	page = pte_page(entry);
++	get_page(page);
+ 	if (page != pagecache_page)
+ 		lock_page(page);
+ 
+@@ -2822,6 +2823,7 @@ out_page_table_lock:
+ 	}
+ 	if (page != pagecache_page)
+ 		unlock_page(page);
++	put_page(page);
+ 
+ out_mutex:
+ 	mutex_unlock(&hugetlb_instantiation_mutex);
+-- 
+1.7.9.5
+

Copied: dists/trunk/linux-2.6/debian/patches/bugfix/all/net-fix-proc-net-dev-regression.patch (from r18927, dists/sid/linux-2.6/debian/patches/bugfix/all/net-fix-proc-net-dev-regression.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/all/net-fix-proc-net-dev-regression.patch	Sun Apr 15 15:35:34 2012	(r18929, copy of r18927, dists/sid/linux-2.6/debian/patches/bugfix/all/net-fix-proc-net-dev-regression.patch)
@@ -0,0 +1,183 @@
+From: Eric Dumazet <eric.dumazet at gmail.com>
+Date: Mon, 2 Apr 2012 22:33:02 +0000
+Subject: [PATCH] net: fix /proc/net/dev regression
+
+commit 2def16ae6b0c77571200f18ba4be049b03d75579 upstream.
+
+Commit f04565ddf52 (dev: use name hash for dev_seq_ops) added a second
+regression, as some devices are missing from /proc/net/dev if many
+devices are defined.
+
+When seq_file buffer is filled, the last ->next/show() method is
+canceled (pos value is reverted to value prior ->next() call)
+
+Problem is after above commit, we dont restart the lookup at right
+position in ->start() method.
+
+Fix this by removing the internal 'pos' pointer added in commit, since
+we need to use the 'loff_t *pos' provided by seq_file layer.
+
+This also reverts commit 5cac98dd0 (net: Fix corruption
+in /proc/*/net/dev_mcast), since its not needed anymore.
+
+Reported-by: Ben Greear <greearb at candelatech.com>
+Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
+Cc: Mihai Maruseac <mmaruseac at ixiacom.com>
+Tested-by:  Ben Greear <greearb at candelatech.com>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ include/linux/netdevice.h |    2 --
+ net/core/dev.c            |   58 ++++++++++-----------------------------------
+ net/core/dev_addr_lists.c |    3 ++-
+ 3 files changed, 15 insertions(+), 48 deletions(-)
+
+diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
+index 1f77540..5cbaa20 100644
+--- a/include/linux/netdevice.h
++++ b/include/linux/netdevice.h
+@@ -2604,8 +2604,6 @@ extern void		net_disable_timestamp(void);
+ extern void *dev_seq_start(struct seq_file *seq, loff_t *pos);
+ extern void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos);
+ extern void dev_seq_stop(struct seq_file *seq, void *v);
+-extern int dev_seq_open_ops(struct inode *inode, struct file *file,
+-			    const struct seq_operations *ops);
+ #endif
+ 
+ extern int netdev_class_create_file(struct class_attribute *class_attr);
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 6c7dc9d..c25d453 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -4028,54 +4028,41 @@ static int dev_ifconf(struct net *net, char __user *arg)
+ 
+ #ifdef CONFIG_PROC_FS
+ 
+-#define BUCKET_SPACE (32 - NETDEV_HASHBITS)
+-
+-struct dev_iter_state {
+-	struct seq_net_private p;
+-	unsigned int pos; /* bucket << BUCKET_SPACE + offset */
+-};
++#define BUCKET_SPACE (32 - NETDEV_HASHBITS - 1)
+ 
+ #define get_bucket(x) ((x) >> BUCKET_SPACE)
+ #define get_offset(x) ((x) & ((1 << BUCKET_SPACE) - 1))
+ #define set_bucket_offset(b, o) ((b) << BUCKET_SPACE | (o))
+ 
+-static inline struct net_device *dev_from_same_bucket(struct seq_file *seq)
++static inline struct net_device *dev_from_same_bucket(struct seq_file *seq, loff_t *pos)
+ {
+-	struct dev_iter_state *state = seq->private;
+ 	struct net *net = seq_file_net(seq);
+ 	struct net_device *dev;
+ 	struct hlist_node *p;
+ 	struct hlist_head *h;
+-	unsigned int count, bucket, offset;
++	unsigned int count = 0, offset = get_offset(*pos);
+ 
+-	bucket = get_bucket(state->pos);
+-	offset = get_offset(state->pos);
+-	h = &net->dev_name_head[bucket];
+-	count = 0;
++	h = &net->dev_name_head[get_bucket(*pos)];
+ 	hlist_for_each_entry_rcu(dev, p, h, name_hlist) {
+-		if (count++ == offset) {
+-			state->pos = set_bucket_offset(bucket, count);
++		if (++count == offset)
+ 			return dev;
+-		}
+ 	}
+ 
+ 	return NULL;
+ }
+ 
+-static inline struct net_device *dev_from_new_bucket(struct seq_file *seq)
++static inline struct net_device *dev_from_bucket(struct seq_file *seq, loff_t *pos)
+ {
+-	struct dev_iter_state *state = seq->private;
+ 	struct net_device *dev;
+ 	unsigned int bucket;
+ 
+-	bucket = get_bucket(state->pos);
+ 	do {
+-		dev = dev_from_same_bucket(seq);
++		dev = dev_from_same_bucket(seq, pos);
+ 		if (dev)
+ 			return dev;
+ 
+-		bucket++;
+-		state->pos = set_bucket_offset(bucket, 0);
++		bucket = get_bucket(*pos) + 1;
++		*pos = set_bucket_offset(bucket, 1);
+ 	} while (bucket < NETDEV_HASHENTRIES);
+ 
+ 	return NULL;
+@@ -4088,33 +4075,20 @@ static inline struct net_device *dev_from_new_bucket(struct seq_file *seq)
+ void *dev_seq_start(struct seq_file *seq, loff_t *pos)
+ 	__acquires(RCU)
+ {
+-	struct dev_iter_state *state = seq->private;
+-
+ 	rcu_read_lock();
+ 	if (!*pos)
+ 		return SEQ_START_TOKEN;
+ 
+-	/* check for end of the hash */
+-	if (state->pos == 0 && *pos > 1)
++	if (get_bucket(*pos) >= NETDEV_HASHENTRIES)
+ 		return NULL;
+ 
+-	return dev_from_new_bucket(seq);
++	return dev_from_bucket(seq, pos);
+ }
+ 
+ void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos)
+ {
+-	struct net_device *dev;
+-
+ 	++*pos;
+-
+-	if (v == SEQ_START_TOKEN)
+-		return dev_from_new_bucket(seq);
+-
+-	dev = dev_from_same_bucket(seq);
+-	if (dev)
+-		return dev;
+-
+-	return dev_from_new_bucket(seq);
++	return dev_from_bucket(seq, pos);
+ }
+ 
+ void dev_seq_stop(struct seq_file *seq, void *v)
+@@ -4213,13 +4187,7 @@ static const struct seq_operations dev_seq_ops = {
+ static int dev_seq_open(struct inode *inode, struct file *file)
+ {
+ 	return seq_open_net(inode, file, &dev_seq_ops,
+-			    sizeof(struct dev_iter_state));
+-}
+-
+-int dev_seq_open_ops(struct inode *inode, struct file *file,
+-		     const struct seq_operations *ops)
+-{
+-	return seq_open_net(inode, file, ops, sizeof(struct dev_iter_state));
++			    sizeof(struct seq_net_private));
+ }
+ 
+ static const struct file_operations dev_seq_fops = {
+diff --git a/net/core/dev_addr_lists.c b/net/core/dev_addr_lists.c
+index 29c07fe..626698f 100644
+--- a/net/core/dev_addr_lists.c
++++ b/net/core/dev_addr_lists.c
+@@ -696,7 +696,8 @@ static const struct seq_operations dev_mc_seq_ops = {
+ 
+ static int dev_mc_seq_open(struct inode *inode, struct file *file)
+ {
+-	return dev_seq_open_ops(inode, file, &dev_mc_seq_ops);
++	return seq_open_net(inode, file, &dev_mc_seq_ops,
++			    sizeof(struct seq_net_private));
+ }
+ 
+ static const struct file_operations dev_mc_seq_fops = {
+-- 
+1.7.9.5
+

Copied: dists/trunk/linux-2.6/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch (from r18927, dists/sid/linux-2.6/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch	Sun Apr 15 15:35:34 2012	(r18929, copy of r18927, dists/sid/linux-2.6/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch)
@@ -0,0 +1,36 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Sat, 7 Apr 2012 04:57:36 +0100
+Subject: [PATCH] ARM: orion5x: Fix GPIO enable bits for MPP9
+
+Commit 554cdaefd1cf7bb54b209c4e68c7cec87ce442a9 seems to have
+accidentally inverted the GPIO valid bits for MPP9 (only).  For the
+mv2120 platform which uses MPP9 as a GPIO LED device, this results in
+the error:
+
+[   12.711476] leds-gpio: probe of leds-gpio failed with error -22
+
+Reported-by: Henry von Tresckow <hvontres at gmail.com>
+References: http://bugs.debian.org/667446
+Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+---
+ arch/arm/mach-orion5x/mpp.h |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm/mach-orion5x/mpp.h b/arch/arm/mach-orion5x/mpp.h
+index eac6897..db70e79 100644
+--- a/arch/arm/mach-orion5x/mpp.h
++++ b/arch/arm/mach-orion5x/mpp.h
+@@ -65,8 +65,8 @@
+ #define MPP8_GIGE               MPP(8,  0x1, 0, 0, 1,   1,   1)
+ 
+ #define MPP9_UNUSED		MPP(9,  0x0, 0, 0, 1,   1,   1)
+-#define MPP9_GPIO		MPP(9,  0x0, 0, 0, 1,   1,   1)
+-#define MPP9_GIGE               MPP(9,  0x1, 1, 1, 1,   1,   1)
++#define MPP9_GPIO		MPP(9,  0x0, 1, 1, 1,   1,   1)
++#define MPP9_GIGE               MPP(9,  0x1, 0, 0, 1,   1,   1)
+ 
+ #define MPP10_UNUSED		MPP(10, 0x0, 0, 0, 1,   1,   1)
+ #define MPP10_GPIO		MPP(10, 0x0, 1, 1, 1,   1,   1)
+-- 
+1.7.9.5
+

Copied: dists/trunk/linux-2.6/debian/patches/debian/nls-Avoid-ABI-change-from-improvement-to-utf8s_to_ut.patch (from r18927, dists/sid/linux-2.6/debian/patches/debian/nls-Avoid-ABI-change-from-improvement-to-utf8s_to_ut.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/debian/nls-Avoid-ABI-change-from-improvement-to-utf8s_to_ut.patch	Sun Apr 15 15:35:34 2012	(r18929, copy of r18927, dists/sid/linux-2.6/debian/patches/debian/nls-Avoid-ABI-change-from-improvement-to-utf8s_to_ut.patch)
@@ -0,0 +1,60 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Mon, 9 Apr 2012 00:51:37 +0100
+Subject: [PATCH] nls: Avoid ABI change from improvement to utf8s_to_utf16s
+
+It's easy to add a temporary wrapper for binary-compatibility.
+---
+ fs/nls/nls_base.c   |   13 ++++++++++++-
+ include/linux/nls.h |    4 +++-
+ 2 files changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/fs/nls/nls_base.c b/fs/nls/nls_base.c
+index 0eb059e..91f145a 100644
+--- a/fs/nls/nls_base.c
++++ b/fs/nls/nls_base.c
+@@ -129,7 +129,7 @@ static inline void put_utf16(wchar_t *s, unsigned c, enum utf16_endian endian)
+ 	}
+ }
+ 
+-int utf8s_to_utf16s(const u8 *s, int len, enum utf16_endian endian,
++int utf8s_to_utf16s_new(const u8 *s, int len, enum utf16_endian endian,
+ 		wchar_t *pwcs, int maxlen)
+ {
+ 	u16 *op;
+@@ -171,6 +171,17 @@ int utf8s_to_utf16s(const u8 *s, int len, enum utf16_endian endian,
+ }
+ EXPORT_SYMBOL(utf8s_to_utf16s);
+ 
++/* Binary-compatibility wrapper */
++#undef utf8s_to_utf16s
++int utf8s_to_utf16s(const u8 *s, int len, wchar_t *pwcs)
++{
++	/* Output length in code units is never longer than input
++	 * length in bytes, so we can trivially set maxlen = len.
++	 */
++	return utf8s_to_utf16s_new(s, len, UTF16_HOST_ENDIAN, pwcs, len);
++}
++EXPORT_SYMBOL(utf8s_to_utf16s);
++
+ static inline unsigned long get_utf16(unsigned c, enum utf16_endian endian)
+ {
+ 	switch (endian) {
+diff --git a/include/linux/nls.h b/include/linux/nls.h
+index 5dc635f..6a2a00c 100644
+--- a/include/linux/nls.h
++++ b/include/linux/nls.h
+@@ -52,8 +52,10 @@ extern struct nls_table *load_nls_default(void);
+ 
+ extern int utf8_to_utf32(const u8 *s, int len, unicode_t *pu);
+ extern int utf32_to_utf8(unicode_t u, u8 *s, int maxlen);
+-extern int utf8s_to_utf16s(const u8 *s, int len,
++extern int utf8s_to_utf16s(const u8 *s, int len, wchar_t *pwcs);
++extern int utf8s_to_utf16s_new(const u8 *s, int len,
+ 		enum utf16_endian endian, wchar_t *pwcs, int maxlen);
++#define utf8s_to_utf16s utf8s_to_utf16s_new
+ extern int utf16s_to_utf8s(const wchar_t *pwcs, int len,
+ 		enum utf16_endian endian, u8 *s, int maxlen);
+ 
+-- 
+1.7.9.5
+

Modified: dists/trunk/linux-2.6/debian/patches/series/base
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/base	Sun Apr 15 15:09:29 2012	(r18928)
+++ dists/trunk/linux-2.6/debian/patches/series/base	Sun Apr 15 15:35:34 2012	(r18929)
@@ -57,3 +57,43 @@
 
 + bugfix/arm/ARM-Fix-missing-linux-types.h-inclusion-in-asm-hardw.patch
 + bugfix/arm/ARM-Fix-missing-include-for-call-to-soft_restart-in-.patch
+
++ bugfix/all/net-fix-proc-net-dev-regression.patch
++ bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch
+
+# Update all Hyper-V drivers to 3.4-rc1 (no longer staging)
++ features/x86/hyperv/0043-drivers-hv-kvp-Add-cleanup-connector-defines.patch
++ features/x86/hyperv/0044-drivers-hv-kvp-Move-the-contents-of-hv_kvp.h-to-hype.patch
++ features/x86/hyperv/0045-net-hyperv-Convert-camel-cased-variables-in-rndis_fi.patch
++ features/x86/hyperv/0046-net-hyperv-Correct-the-assignment-in-netvsc_recv_cal.patch
++ features/x86/hyperv/0047-net-hyperv-Remove-the-unnecessary-memset-in-rndis_fi.patch
++ features/x86/hyperv/0048-Staging-hv-storvsc-Cleanup-some-comments.patch
++ features/x86/hyperv/0049-Staging-hv-storvsc-Cleanup-storvsc_probe.patch
++ features/x86/hyperv/0050-Staging-hv-storvsc-Cleanup-storvsc_queuecommand.patch
++ features/x86/hyperv/0051-Staging-hv-storvsc-Introduce-defines-for-srb-status-.patch
++ features/x86/hyperv/0052-Staging-hv-storvsc-Cleanup-storvsc_host_reset_handle.patch
++ features/x86/hyperv/0053-Staging-hv-storvsc-Move-and-cleanup-storvsc_remove.patch
++ features/x86/hyperv/0054-Staging-hv-storvsc-Add-a-comment-to-explain-life-cyc.patch
++ features/x86/hyperv/0055-Staging-hv-storvsc-Get-rid-of-the-on_io_completion-i.patch
++ features/x86/hyperv/0056-Staging-hv-storvsc-Rename-the-context-field-in-hv_st.patch
++ features/x86/hyperv/0057-Staging-hv-storvsc-Miscellaneous-cleanup-of-storvsc-.patch
++ features/x86/hyperv/0058-Staging-hv-storvsc-Cleanup-the-code-for-generating-p.patch
++ features/x86/hyperv/0059-Staging-hv-storvsc-Cleanup-some-protocol-related-con.patch
++ features/x86/hyperv/0060-Staging-hv-storvsc-Get-rid-of-some-unused-defines.patch
++ features/x86/hyperv/0061-Staging-hv-storvsc-Consolidate-the-request-structure.patch
++ features/x86/hyperv/0062-Staging-hv-storvsc-Consolidate-all-the-wire-protocol.patch
++ features/x86/hyperv/0063-drivers-hv-Cleanup-the-kvp-related-state-in-hyperv.h.patch
++ features/x86/hyperv/0064-tools-hv-Use-hyperv.h-to-get-the-KVP-definitions.patch
++ features/x86/hyperv/0065-drivers-hv-kvp-Cleanup-the-kernel-user-protocol.patch
++ features/x86/hyperv/0066-drivers-hv-Increase-the-number-of-VCPUs-supported-in.patch
++ features/x86/hyperv/0067-Staging-hv-storvsc-Move-the-storage-driver-out-of-th.patch
++ features/x86/hyperv/0069-net-hyperv-Fix-data-corruption-in-rndis_filter_recei.patch
++ features/x86/hyperv/0070-net-hyperv-Add-support-for-vlan-trunking-from-guests.patch
++ features/x86/hyperv/0071-Drivers-hv-Add-new-message-types-to-enhance-KVP.patch
++ features/x86/hyperv/0073-Drivers-hv-Support-the-newly-introduced-KVP-messages.patch
++ features/x86/hyperv/0074-Tools-hv-Fully-support-the-new-KVP-verbs-in-the-user.patch
++ features/x86/hyperv/0075-Tools-hv-Support-enumeration-from-all-the-pools.patch
++ features/x86/hyperv/0076-net-hyperv-Fix-the-code-handling-tx-busy.patch
++ features/x86/hyperv/0077-hv-remove-the-second-argument-of-k-un-map_atomic.patch
+
++ bugfix/all/hugetlb-fix-race-condition-in-hugetlb_fault.patch



More information about the Kernel-svn-changes mailing list