summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2010-10-12 18:44:55 -0700
committerColin Cross <ccross@android.com>2010-10-12 18:44:55 -0700
commit5c7c63142d2298d383e6e9daa733da78370b8aa1 (patch)
tree3711ead2dff46545431e17987175f3c894fe5061 /fs
parentcc8231d0ddef32343db199b6a668d572c079afc4 (diff)
parent0a9a538f34acc96b2e23c87728448d29b0186949 (diff)
Merge branch 'android-2.6.36' into android-tegra-2.6.36
Diffstat (limited to 'fs')
-rw-r--r--fs/partitions/efi.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/fs/partitions/efi.c b/fs/partitions/efi.c
index 486b4444e6a4..35bbbd279d73 100644
--- a/fs/partitions/efi.c
+++ b/fs/partitions/efi.c
@@ -96,6 +96,7 @@
#include <linux/crc32.h>
#include <linux/math64.h>
#include <linux/slab.h>
+#include <linux/nls.h>
#include "check.h"
#include "efi.h"
@@ -617,15 +618,20 @@ int efi_partition(struct parsed_partitions *state)
u64 start = le64_to_cpu(ptes[i].starting_lba);
u64 size = le64_to_cpu(ptes[i].ending_lba) -
le64_to_cpu(ptes[i].starting_lba) + 1ULL;
+ u8 name[sizeof(ptes->partition_name) / sizeof(efi_char16_t)];
+ int len;
if (!is_pte_valid(&ptes[i], last_lba(state->bdev)))
continue;
+ len = utf16s_to_utf8s(ptes[i].partition_name,
+ sizeof(ptes[i].partition_name) /
+ sizeof(efi_char16_t),
+ UTF16_LITTLE_ENDIAN, name,
+ sizeof(name));
+
put_named_partition(state, i+1, start * ssz, size * ssz,
- (const char *) ptes[i].partition_name,
- strnlen((const char *)
- ptes[i].partition_name,
- sizeof(ptes[i].partition_name)));
+ name, len);
/* If this is a RAID volume, tell md */
if (!efi_guidcmp(ptes[i].partition_type_guid,