diff options
Diffstat (limited to 'lib/vsprintf.c')
| -rw-r--r-- | lib/vsprintf.c | 21 | 
1 files changed, 8 insertions, 13 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index ccb664b54280..0967771d8f7f 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -30,6 +30,7 @@  #include <linux/ioport.h>  #include <linux/dcache.h>  #include <linux/cred.h> +#include <linux/uuid.h>  #include <net/addrconf.h>  #ifdef CONFIG_BLOCK  #include <linux/blkdev.h> @@ -1304,19 +1305,17 @@ static noinline_for_stack  char *uuid_string(char *buf, char *end, const u8 *addr,  		  struct printf_spec spec, const char *fmt)  { -	char uuid[sizeof("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")]; +	char uuid[UUID_STRING_LEN + 1];  	char *p = uuid;  	int i; -	static const u8 be[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; -	static const u8 le[16] = {3,2,1,0,5,4,7,6,8,9,10,11,12,13,14,15}; -	const u8 *index = be; +	const u8 *index = uuid_be_index;  	bool uc = false;  	switch (*(++fmt)) {  	case 'L':  		uc = true;		/* fall-through */  	case 'l': -		index = le; +		index = uuid_le_index;  		break;  	case 'B':  		uc = true; @@ -1324,7 +1323,10 @@ char *uuid_string(char *buf, char *end, const u8 *addr,  	}  	for (i = 0; i < 16; i++) { -		p = hex_byte_pack(p, addr[index[i]]); +		if (uc) +			p = hex_byte_pack_upper(p, addr[index[i]]); +		else +			p = hex_byte_pack(p, addr[index[i]]);  		switch (i) {  		case 3:  		case 5: @@ -1337,13 +1339,6 @@ char *uuid_string(char *buf, char *end, const u8 *addr,  	*p = 0; -	if (uc) { -		p = uuid; -		do { -			*p = toupper(*p); -		} while (*(++p)); -	} -  	return string(buf, end, uuid, spec);  }  | 
