From: Andrew Morton It generates warnings: drivers/char/tpm/tpm_bios.c: In function `get_event_name': drivers/char/tpm/tpm_bios.c:223: warning: cast from pointer to integer of different size drivers/char/tpm/tpm_bios.c:223: warning: cast from pointer to integer of different size drivers/char/tpm/tpm_bios.c:223: warning: cast from pointer to integer of different size drivers/char/tpm/tpm_bios.c:224: warning: cast from pointer to integer of different size drivers/char/tpm/tpm_bios.c:224: warning: cast from pointer to integer of different size drivers/char/tpm/tpm_bios.c:224: warning: cast from pointer to integer of different size and I'm not sure what the code is doing there, but it seems wrong. We're using the address of the buffer rather than the contents of it. The patch adds more nasty typecasting, but I think the whole arrangement could be done in a more typesafe manner. Cc: Kylene Jo Hall Signed-off-by: Andrew Morton --- drivers/char/tpm/tpm_bios.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN drivers/char/tpm/tpm_bios.c~tpm_bios-indexing-fix drivers/char/tpm/tpm_bios.c --- 25/drivers/char/tpm/tpm_bios.c~tpm_bios-indexing-fix 2006-01-20 00:00:42.000000000 -0800 +++ 25-akpm/drivers/char/tpm/tpm_bios.c 2006-01-20 00:00:49.000000000 -0800 @@ -220,8 +220,8 @@ static int get_event_name(char *dest, st } break; case EVENT_TAG: - event_id = be32_to_cpu(event_entry); - event_data_size = be32_to_cpu(&event_entry[4]); + event_id = be32_to_cpu(*((u32 *)event_entry)); + event_data_size = be32_to_cpu(((u32 *)event_entry)[1]); /* ToDo Row data -> Base64 */ _