diff options
author | Matt Fleming <matt.fleming@intel.com> | 2013-02-03 14:53:46 -0500 |
---|---|---|
committer | Matt Fleming <matt.fleming@intel.com> | 2013-04-17 03:28:21 -0400 |
commit | d5abc7c1050ab2b9556a4bf21626cd74e83cd086 (patch) | |
tree | c38123d5676d331d9562a7f2620b470743b80f09 /drivers/firmware/google | |
parent | 07961ac7c0ee8b546658717034fe692fd12eefa9 (diff) |
efi: move utf16 string functions to efi.h
There are currently two implementations of the utf16 string functions.
Somewhat confusingly, they've got different names.
Centralise the functions in efi.h.
Reviewed-by: Tom Gundersen <teg@jklm.no>
Tested-by: Tom Gundersen <teg@jklm.no>
Reviewed-by: Mike Waychison <mikew@google.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Diffstat (limited to 'drivers/firmware/google')
-rw-r--r-- | drivers/firmware/google/gsmi.c | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/drivers/firmware/google/gsmi.c b/drivers/firmware/google/gsmi.c index 91ddf0f7a1b9..c409a7577afc 100644 --- a/drivers/firmware/google/gsmi.c +++ b/drivers/firmware/google/gsmi.c | |||
@@ -288,17 +288,6 @@ static int gsmi_exec(u8 func, u8 sub) | |||
288 | return rc; | 288 | return rc; |
289 | } | 289 | } |
290 | 290 | ||
291 | /* Return the number of unicode characters in data */ | ||
292 | static size_t | ||
293 | utf16_strlen(efi_char16_t *data, unsigned long maxlength) | ||
294 | { | ||
295 | unsigned long length = 0; | ||
296 | |||
297 | while (*data++ != 0 && length < maxlength) | ||
298 | length++; | ||
299 | return length; | ||
300 | } | ||
301 | |||
302 | static efi_status_t gsmi_get_variable(efi_char16_t *name, | 291 | static efi_status_t gsmi_get_variable(efi_char16_t *name, |
303 | efi_guid_t *vendor, u32 *attr, | 292 | efi_guid_t *vendor, u32 *attr, |
304 | unsigned long *data_size, | 293 | unsigned long *data_size, |
@@ -311,7 +300,7 @@ static efi_status_t gsmi_get_variable(efi_char16_t *name, | |||
311 | }; | 300 | }; |
312 | efi_status_t ret = EFI_SUCCESS; | 301 | efi_status_t ret = EFI_SUCCESS; |
313 | unsigned long flags; | 302 | unsigned long flags; |
314 | size_t name_len = utf16_strlen(name, GSMI_BUF_SIZE / 2); | 303 | size_t name_len = utf16_strnlen(name, GSMI_BUF_SIZE / 2); |
315 | int rc; | 304 | int rc; |
316 | 305 | ||
317 | if (name_len >= GSMI_BUF_SIZE / 2) | 306 | if (name_len >= GSMI_BUF_SIZE / 2) |
@@ -380,7 +369,7 @@ static efi_status_t gsmi_get_next_variable(unsigned long *name_size, | |||
380 | return EFI_BAD_BUFFER_SIZE; | 369 | return EFI_BAD_BUFFER_SIZE; |
381 | 370 | ||
382 | /* Let's make sure the thing is at least null-terminated */ | 371 | /* Let's make sure the thing is at least null-terminated */ |
383 | if (utf16_strlen(name, GSMI_BUF_SIZE / 2) == GSMI_BUF_SIZE / 2) | 372 | if (utf16_strnlen(name, GSMI_BUF_SIZE / 2) == GSMI_BUF_SIZE / 2) |
384 | return EFI_INVALID_PARAMETER; | 373 | return EFI_INVALID_PARAMETER; |
385 | 374 | ||
386 | spin_lock_irqsave(&gsmi_dev.lock, flags); | 375 | spin_lock_irqsave(&gsmi_dev.lock, flags); |
@@ -408,7 +397,7 @@ static efi_status_t gsmi_get_next_variable(unsigned long *name_size, | |||
408 | 397 | ||
409 | /* Copy the name back */ | 398 | /* Copy the name back */ |
410 | memcpy(name, gsmi_dev.name_buf->start, GSMI_BUF_SIZE); | 399 | memcpy(name, gsmi_dev.name_buf->start, GSMI_BUF_SIZE); |
411 | *name_size = utf16_strlen(name, GSMI_BUF_SIZE / 2) * 2; | 400 | *name_size = utf16_strnlen(name, GSMI_BUF_SIZE / 2) * 2; |
412 | 401 | ||
413 | /* copy guid to return buffer */ | 402 | /* copy guid to return buffer */ |
414 | memcpy(vendor, ¶m.guid, sizeof(param.guid)); | 403 | memcpy(vendor, ¶m.guid, sizeof(param.guid)); |
@@ -434,7 +423,7 @@ static efi_status_t gsmi_set_variable(efi_char16_t *name, | |||
434 | EFI_VARIABLE_BOOTSERVICE_ACCESS | | 423 | EFI_VARIABLE_BOOTSERVICE_ACCESS | |
435 | EFI_VARIABLE_RUNTIME_ACCESS, | 424 | EFI_VARIABLE_RUNTIME_ACCESS, |
436 | }; | 425 | }; |
437 | size_t name_len = utf16_strlen(name, GSMI_BUF_SIZE / 2); | 426 | size_t name_len = utf16_strnlen(name, GSMI_BUF_SIZE / 2); |
438 | efi_status_t ret = EFI_SUCCESS; | 427 | efi_status_t ret = EFI_SUCCESS; |
439 | int rc; | 428 | int rc; |
440 | unsigned long flags; | 429 | unsigned long flags; |