diff options
author | Colin Cross <ccross@android.com> | 2010-10-12 18:44:55 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2010-10-12 18:44:55 -0700 |
commit | 5c7c63142d2298d383e6e9daa733da78370b8aa1 (patch) | |
tree | 3711ead2dff46545431e17987175f3c894fe5061 /fs/partitions | |
parent | cc8231d0ddef32343db199b6a668d572c079afc4 (diff) | |
parent | 0a9a538f34acc96b2e23c87728448d29b0186949 (diff) |
Merge branch 'android-2.6.36' into android-tegra-2.6.36
Diffstat (limited to 'fs/partitions')
-rw-r--r-- | fs/partitions/efi.c | 14 |
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, |