mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Christopher Li <lkml@chrisli.org>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Andries.Brouwer@cwi.nl, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] fat sparse fixes
Date: Tue, 30 Sep 2003 00:05:56 -0700	[thread overview]
Message-ID: <20030930070556.GA2182@64m.dyndns.org> (raw)
In-Reply-To: <Pine.LNX.4.44.0309290946070.23520-100000@home.osdl.org>

On Mon, Sep 29, 2003 at 09:50:54AM -0700, Linus Torvalds wrote:
> 
> On Mon, 29 Sep 2003 Andries.Brouwer@cwi.nl wrote:
> >
> > --- a/fs/fat/dir.c	Mon Sep 29 01:05:41 2003
> > +++ b/fs/fat/dir.c	Mon Sep 29 01:11:39 2003
> > @@ -630,7 +630,7 @@
> >  		    put_user(slen, &d1->d_reclen))
> >  			goto efault;
> >  	} else {
> > -		if (put_user(0, d2->d_name)			||
> > +		if (put_user(0, d2->d_name+0)			||
> >  		    put_user(0, &d2->d_reclen)			||
> >  		    copy_to_user(d1->d_name, name, len)		||
> >  		    put_user(0, d1->d_name+len)			||
> 
> The above seems to just work around a sparse bug. Please don't - I'd 
> rather have regular code and try to fix the sparse problem.
> 
> Hmm.. I wonder why sparse doesn't get the address space right on arrays. 
> It should see that "d2" is a user pointer , so d2->d_name is one too.

. The problem is in "*d2->d_name", the address space get
lost at evaluate_dereference of "*". It is a monster macro right
there. The simple version is:

struct dentry {
        char d_name[256];
};

int foo (void) {
        struct dentry __attribute__((noderef, address_space(1))) *d2;
        __typeof__(*d2->d_name) *__pu_addr = d2->d_name;
                   ^^^^^^^^^^^
}


 
> It gets it right if you add the "+0", or if you add a "&" in front. So 
> it looks like the sparse array->pointer degeneration misses something.

Besids address sapce, it seems that the source and target base type
is pointer of char_ctype instead of pointer of void_ctype. I get lost
there.

Regards.

Chris

  reply	other threads:[~2003-09-30  7:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-28 23:29 Andries.Brouwer
2003-09-29 16:50 ` Linus Torvalds
2003-09-30  7:05   ` Christopher Li [this message]
2003-09-30 23:59     ` Linus Torvalds

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=20030930070556.GA2182@64m.dyndns.org \
    --to=lkml@chrisli.org \
    --cc=Andries.Brouwer@cwi.nl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@osdl.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®