Messages in this thread | | | Subject | Re: [RESEND 2][PATCH v4] hexdump: fix for non-aligned buffers | From | Joe Perches <> | Date | Wed, 08 Jul 2015 16:49:02 -0700 |
| |
On Thu, 2015-07-09 at 01:44 +0200, Horacio Mijail Antón Quiles wrote: > An hexdump with a buf not aligned to the groupsize causes > non-naturally-aligned memory accesses. This was causing a kernel panic on > the processor BlackFin BF527, when such an unaligned buffer was fed by the > function ubifs_scanned_corruption in fs/ubifs/scan.c .
Seems sensible enough to me.
> --- > diff --git a/lib/hexdump.c b/lib/hexdump.c [] > @@ -124,6 +124,11 @@ int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, > if ((len % groupsize) != 0) /* no mixed size output */ > groupsize = 1; > > + /* fall back to 1-byte groups if buf is not aligned to groupsize */ > + if (!IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) && > + !IS_ALIGNED((uintptr_t)buf, groupsize)) > + groupsize = 1; > + > ngroups = len / groupsize; > ascii_column = rowsize * 2 + rowsize / groupsize + 1; >
| |