From: Jesper Nilsson <Jesper.Nilsson@axis.com>
To: Bastien ROUCARIES <roucaries.bastien@gmail.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
David Miller <davem@davemloft.net>,
tj@kernel.org, gregkh@suse.de, stern@rowland.harvard.edu,
jens.axboe@oracle.com, hinko.kocevar@cetrtapot.si
Subject: Re: lib/klist.c: bit 0 in pointer can't be used as flag
Date: Wed, 14 Jan 2009 11:19:08 +0100 [thread overview]
Message-ID: <20090114101908.GF19262@axis.com> (raw)
In-Reply-To: <195c7a900901131511l7077eebar8396267e3f2b670b@mail.gmail.com>
On Wed, Jan 14, 2009 at 12:11:32AM +0100, Bastien ROUCARIES wrote:
> 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 :)
That works, but we need to do it not for the struct klist_node,
but for the struct we insert into the void * in klist_node,
which is struct klist.
The following patch works for CRIS, and is less intrusive than
my earlier patch. If this the way to go I can resubmit a proper patch.
diff --git a/include/linux/klist.h b/include/linux/klist.h
index 8ea98db..a21cd7a 100644
--- a/include/linux/klist.h
+++ b/include/linux/klist.h
@@ -23,7 +23,7 @@ struct klist {
struct list_head k_list;
void (*get)(struct klist_node *);
void (*put)(struct klist_node *);
-};
+} __attribute__ ((aligned (4)));
#define KLIST_INIT(_name, _get, _put) \
{ .k_lock = __SPIN_LOCK_UNLOCKED(_name.k_lock), \
> Regards
>
> Bastien
/^JN - Jesper Nilsson
--
Jesper Nilsson -- jesper.nilsson@axis.com
next prev parent reply other threads:[~2009-01-14 10:19 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-13 15:14 lib/klist.c: bit 0 in pointer can't be used as flag Jesper Nilsson
2009-01-13 21:10 ` David Miller
2009-01-13 22:12 ` Jesper Nilsson
2009-01-13 22:40 ` KOSAKI Motohiro
2009-01-13 22:45 ` David Miller
2009-01-13 23:11 ` Bastien ROUCARIES
2009-01-14 10:19 ` Jesper Nilsson [this message]
2009-01-14 10:21 ` David Miller
2009-01-14 10:36 ` Jesper Nilsson
2009-01-14 10:45 ` David Miller
2009-01-14 11:02 ` Jesper Nilsson
2009-01-14 15:12 ` Jesper Nilsson
2009-01-14 18:17 ` Greg KH
2009-01-14 21:53 ` Jesper Nilsson
2009-01-13 23:54 ` KOSAKI Motohiro
2009-01-13 23:59 ` Greg KH
2009-01-14 10:25 ` Jesper Nilsson
2009-01-14 0:33 ` Hugh Dickins
2009-01-14 10:18 ` Jesper Nilsson
2009-01-13 22:42 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090114101908.GF19262@axis.com \
--to=jesper.nilsson@axis.com \
--cc=davem@davemloft.net \
--cc=gregkh@suse.de \
--cc=hinko.kocevar@cetrtapot.si \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=roucaries.bastien@gmail.com \
--cc=stern@rowland.harvard.edu \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.