Messages in this thread | | | Date | Wed, 14 Jan 2009 00:11:32 +0100 | From | "Bastien ROUCARIES" <> | Subject | Re: lib/klist.c: bit 0 in pointer can't be used as flag |
| |
On Tue, Jan 13, 2009 at 11:45 PM, David Miller <davem@davemloft.net> wrote: > From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> > Date: Wed, 14 Jan 2009 07:40:19 +0900 > >> > It may be that we've worked around the other spots, although I haven't >> > seen anything like that, we might just have been lucky until now. >> > >> > Can you recall another place where this trick is used? >> >> rmap. >> Don't CRIS use mmu? > > I'm beginning to suspect the issue is only with objects > in the kernel image itself. Dynamically allocated memory > is properly aligned and therefore the "low bit status bits > in pointer" trick works.
Perhaps using a pointerhackalign trick on this structure where #define pointerhackalign(x) __attribute__ ((aligned (x))) and declare struct klist_node { ... } pointerhackalign(2);
Because __attribute__ ((aligned (x))) could only increase alignment it will safe to do that and serve as documentation purpose :)
Regards
Bastien
| |