[PATCH] mach-snapdragon: Fix overwriting last digit of serial number

When generating the MAC address based on the boards serial number the last digit was overwritten with the null termination. That way boards with serial numbers close to each other would use the same MAC address.
Signed-off-by: Jan-Christoph Tebbe Jan-Christoph.Tebbe@ithinx.io --- arch/arm/mach-snapdragon/misc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/mach-snapdragon/misc.c b/arch/arm/mach-snapdragon/misc.c index f6c87866c0..aaa561c2c6 100644 --- a/arch/arm/mach-snapdragon/misc.c +++ b/arch/arm/mach-snapdragon/misc.c @@ -41,7 +41,7 @@ void msm_generate_mac_addr(u8 *mac) int i; char sn[9];
- snprintf(sn, 8, "%08x", msm_board_serial()); + snprintf(sn, 9, "%08x", msm_board_serial());
/* fill in the mac with serialno, use locally adminstrated pool */ mac[0] = 0x02;

On Mon, Mar 16, 2020 at 05:51:51PM +0100, Jan-Christoph Tebbe wrote:
When generating the MAC address based on the boards serial number the last digit was overwritten with the null termination. That way boards with serial numbers close to each other would use the same MAC address.
Signed-off-by: Jan-Christoph Tebbe Jan-Christoph.Tebbe@ithinx.io
arch/arm/mach-snapdragon/misc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/mach-snapdragon/misc.c b/arch/arm/mach-snapdragon/misc.c index f6c87866c0..aaa561c2c6 100644 --- a/arch/arm/mach-snapdragon/misc.c +++ b/arch/arm/mach-snapdragon/misc.c @@ -41,7 +41,7 @@ void msm_generate_mac_addr(u8 *mac) int i; char sn[9];
- snprintf(sn, 8, "%08x", msm_board_serial());
snprintf(sn, 9, "%08x", msm_board_serial());
/* fill in the mac with serialno, use locally adminstrated pool */ mac[0] = 0x02;
OK, so sn is size 9 and now you're filling the whole thing. Why don't we need to increase sn to size 10? Am I missing something? Thanks!

Hello Tom,
the buffer has to hold 8 hex digits and a trailing \0, therefore 9 bytes should be enough. The problem was, that snprintf was told sn were only 8 characters long, making snprintf to only write 7 digits followed by the trailing \0.
Jan-Christoph
Am Fr., 20. März 2020 um 18:31 Uhr schrieb Tom Rini trini@konsulko.com:
On Mon, Mar 16, 2020 at 05:51:51PM +0100, Jan-Christoph Tebbe wrote:
When generating the MAC address based on the boards serial number the last digit was overwritten with the null termination. That way boards with serial numbers close to each other would use the same MAC address.
Signed-off-by: Jan-Christoph Tebbe Jan-Christoph.Tebbe@ithinx.io
arch/arm/mach-snapdragon/misc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/mach-snapdragon/misc.c b/arch/arm/mach-snapdragon/misc.c index f6c87866c0..aaa561c2c6 100644 --- a/arch/arm/mach-snapdragon/misc.c +++ b/arch/arm/mach-snapdragon/misc.c @@ -41,7 +41,7 @@ void msm_generate_mac_addr(u8 *mac) int i; char sn[9];
- snprintf(sn, 8, "%08x", msm_board_serial());
snprintf(sn, 9, "%08x", msm_board_serial());
/* fill in the mac with serialno, use locally adminstrated pool */ mac[0] = 0x02;
OK, so sn is size 9 and now you're filling the whole thing. Why don't we need to increase sn to size 10? Am I missing something? Thanks!
-- Tom

On Mon, Mar 16, 2020 at 05:51:51PM +0100, Jan-Christoph Tebbe wrote:
When generating the MAC address based on the boards serial number the last digit was overwritten with the null termination. That way boards with serial numbers close to each other would use the same MAC address.
Signed-off-by: Jan-Christoph Tebbe Jan-Christoph.Tebbe@ithinx.io
Applied to u-boot/master, thanks!
participants (2)
-
Jan-Christoph Tebbe
-
Tom Rini