All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.