compile breakage due to [SK_BUFF]: Convert skb-end to sk_buff_data_t

2007-05-13 Thread Muli Ben-Yehuda
On Fri, Apr 27, 2007 at 05:03:44PM +, Linux Kernel Mailing List wrote:

 Gitweb: 
 http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4305b541357ddbd205aa145dc378926b7cb12283
 Commit: 4305b541357ddbd205aa145dc378926b7cb12283
 Parent: 27a884dc3cb63b93c2b3b643f5b31eed5f8a4d26
 Author: Arnaldo Carvalho de Melo [EMAIL PROTECTED]
 AuthorDate: Thu Apr 19 20:43:29 2007 -0700
 Committer:  David S. Miller [EMAIL PROTECTED]
 CommitDate: Wed Apr 25 22:26:29 2007 -0700
 
 [SK_BUFF]: Convert skb-end to sk_buff_data_t
 
 Now to convert the last one, skb-data, that will allow many 
 simplifications
 and removal of some of the offset helpers.
 
 Signed-off-by: Arnaldo Carvalho de Melo [EMAIL PROTECTED]
 Signed-off-by: David S. Miller [EMAIL PROTECTED]

This patch and the previous one breaks the compilation on one of my
machines. Specifically, this bit:

 @@ -632,12 +644,13 @@ int pskb_expand_head(struct sk_buff *skb, int nhead, 
 int ntail,
   /* Copy only real data... and, alas, header. This should be
* optimized for the cases when header is void. */
   memcpy(data + nhead, skb-head,
 - skb-tail
 -#ifndef NET_SKBUFF_DATA_USES_OFFSET
 - - skb-head
 +#ifdef NET_SKBUFF_DATA_USES_OFFSET
 + skb-tail);
 +#else
 + skb-tail - skb-head);
  #endif
 - );
 - memcpy(data + size, skb-end, sizeof(struct skb_shared_info));
 + memcpy(data + size, skb_end_pointer(skb),
 +sizeof(struct skb_shared_info));
  
   for (i = 0; i  skb_shinfo(skb)-nr_frags; i++)
   get_page(skb_shinfo(skb)-frags[i].page);

Causes this compile error:

/home/muli/kernel/trident/trident.git/net/core/skbuff.c:648:1: directives may 
not be used inside a macro argument
/home/muli/kernel/trident/trident.git/net/core/skbuff.c:647:39: unterminated 
argument list invoking macro memcpy
/home/muli/kernel/trident/trident.git/net/core/skbuff.c: In function 
`pskb_expand_head':
/home/muli/kernel/trident/trident.git/net/core/skbuff.c:651: `memcpy' 
undeclared (first use in this function)
/home/muli/kernel/trident/trident.git/net/core/skbuff.c:651: (Each undeclared 
identifier is reported only once
/home/muli/kernel/trident/trident.git/net/core/skbuff.c:651: for each function 
it appears in.)
/home/muli/kernel/trident/trident.git/net/core/skbuff.c:651: syntax error 
before skb

[EMAIL PROTECTED]:~/kernel/trident/trident.git$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.3/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man 
--infodir=/usr/share/info --enable-shared --enable-threads=posix 
--disable-checking --with-system-zlib --enable-__cxa_atexit 
--host=i386-redhat-linux
Thread model: posix
gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-53)

It happens because memcpy ends up being a macro, and this gcc dislikes
having a preprocessor directive inside a macro argument. I don't know
if if it's valid in general, but Documentation/Changes does say we
still support gcc 3.2...

Cheers,
Muli

-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: compile breakage due to [SK_BUFF]: Convert skb-end to sk_buff_data_t

2007-05-13 Thread Arnaldo Carvalho de Melo

Muli Ben-Yehuda wrote:

On Fri, Apr 27, 2007 at 05:03:44PM +, Linux Kernel Mailing List wrote:

  

Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4305b541357ddbd205aa145dc378926b7cb12283
Commit: 4305b541357ddbd205aa145dc378926b7cb12283
Parent: 27a884dc3cb63b93c2b3b643f5b31eed5f8a4d26
Author: Arnaldo Carvalho de Melo [EMAIL PROTECTED]
AuthorDate: Thu Apr 19 20:43:29 2007 -0700
Committer:  David S. Miller [EMAIL PROTECTED]
CommitDate: Wed Apr 25 22:26:29 2007 -0700

[SK_BUFF]: Convert skb-end to sk_buff_data_t

Now to convert the last one, skb-data, that will allow many simplifications

and removal of some of the offset helpers.

Signed-off-by: Arnaldo Carvalho de Melo [EMAIL PROTECTED]

Signed-off-by: David S. Miller [EMAIL PROTECTED]



This patch and the previous one breaks the compilation on one of my
machines. Specifically, this bit:

  

@@ -632,12 +644,13 @@ int pskb_expand_head(struct sk_buff *skb, int nhead, int 
ntail,
/* Copy only real data... and, alas, header. This should be
 * optimized for the cases when header is void. */
memcpy(data + nhead, skb-head,
-   skb-tail
-#ifndef NET_SKBUFF_DATA_USES_OFFSET
-   - skb-head
+#ifdef NET_SKBUFF_DATA_USES_OFFSET
+   skb-tail);
+#else
+   skb-tail - skb-head);
 #endif
-   );
-   memcpy(data + size, skb-end, sizeof(struct skb_shared_info));
+   memcpy(data + size, skb_end_pointer(skb),
+  sizeof(struct skb_shared_info));
 
 	for (i = 0; i  skb_shinfo(skb)-nr_frags; i++)

get_page(skb_shinfo(skb)-frags[i].page);



Causes this compile error:

/home/muli/kernel/trident/trident.git/net/core/skbuff.c:648:1: directives may 
not be used inside a macro argument
/home/muli/kernel/trident/trident.git/net/core/skbuff.c:647:39: unterminated argument 
list invoking macro memcpy
/home/muli/kernel/trident/trident.git/net/core/skbuff.c: In function 
`pskb_expand_head':
/home/muli/kernel/trident/trident.git/net/core/skbuff.c:651: `memcpy' 
undeclared (first use in this function)
/home/muli/kernel/trident/trident.git/net/core/skbuff.c:651: (Each undeclared 
identifier is reported only once
/home/muli/kernel/trident/trident.git/net/core/skbuff.c:651: for each function 
it appears in.)
/home/muli/kernel/trident/trident.git/net/core/skbuff.c:651: syntax error before 
skb

[EMAIL PROTECTED]:~/kernel/trident/trident.git$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.3/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man 
--infodir=/usr/share/info --enable-shared --enable-threads=posix 
--disable-checking --with-system-zlib --enable-__cxa_atexit 
--host=i386-redhat-linux
Thread model: posix
gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-53)

It happens because memcpy ends up being a macro, and this gcc dislikes
having a preprocessor directive inside a macro argument. I don't know
if if it's valid in general, but Documentation/Changes does say we
still support gcc 3.2...
  


Well, the fix is easy, can you provide a patch?

- Arnaldo
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: compile breakage due to [SK_BUFF]: Convert skb-end to sk_buff_data_t

2007-05-13 Thread Randy Dunlap
On Sun, 13 May 2007 20:27:35 -0300 Arnaldo Carvalho de Melo wrote:

 Muli Ben-Yehuda wrote:
  On Fri, Apr 27, 2007 at 05:03:44PM +, Linux Kernel Mailing List wrote:
 

  Gitweb: 
  http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4305b541357ddbd205aa145dc378926b7cb12283
  Commit: 4305b541357ddbd205aa145dc378926b7cb12283
  Parent: 27a884dc3cb63b93c2b3b643f5b31eed5f8a4d26
  Author: Arnaldo Carvalho de Melo [EMAIL PROTECTED]
  AuthorDate: Thu Apr 19 20:43:29 2007 -0700
  Committer:  David S. Miller [EMAIL PROTECTED]
  CommitDate: Wed Apr 25 22:26:29 2007 -0700
 
  [SK_BUFF]: Convert skb-end to sk_buff_data_t
  
  Now to convert the last one, skb-data, that will allow many 
  simplifications
  and removal of some of the offset helpers.
  
  Signed-off-by: Arnaldo Carvalho de Melo [EMAIL PROTECTED]
  Signed-off-by: David S. Miller [EMAIL PROTECTED]
  
 
  This patch and the previous one breaks the compilation on one of my
  machines. Specifically, this bit:
 

  @@ -632,12 +644,13 @@ int pskb_expand_head(struct sk_buff *skb, int nhead, 
  int ntail,
 /* Copy only real data... and, alas, header. This should be
  * optimized for the cases when header is void. */
 memcpy(data + nhead, skb-head,
  -  skb-tail
  -#ifndef NET_SKBUFF_DATA_USES_OFFSET
  -  - skb-head
  +#ifdef NET_SKBUFF_DATA_USES_OFFSET
  +  skb-tail);
  +#else
  +  skb-tail - skb-head);
   #endif
  -  );
  -  memcpy(data + size, skb-end, sizeof(struct skb_shared_info));
  +  memcpy(data + size, skb_end_pointer(skb),
  + sizeof(struct skb_shared_info));
   
 for (i = 0; i  skb_shinfo(skb)-nr_frags; i++)
 get_page(skb_shinfo(skb)-frags[i].page);
  
 
  Causes this compile error:
 
  /home/muli/kernel/trident/trident.git/net/core/skbuff.c:648:1: directives 
  may not be used inside a macro argument
  /home/muli/kernel/trident/trident.git/net/core/skbuff.c:647:39: 
  unterminated argument list invoking macro memcpy
  /home/muli/kernel/trident/trident.git/net/core/skbuff.c: In function 
  `pskb_expand_head':
  /home/muli/kernel/trident/trident.git/net/core/skbuff.c:651: `memcpy' 
  undeclared (first use in this function)
  /home/muli/kernel/trident/trident.git/net/core/skbuff.c:651: (Each 
  undeclared identifier is reported only once
  /home/muli/kernel/trident/trident.git/net/core/skbuff.c:651: for each 
  function it appears in.)
  /home/muli/kernel/trident/trident.git/net/core/skbuff.c:651: syntax error 
  before skb
 
  [EMAIL PROTECTED]:~/kernel/trident/trident.git$ gcc -v
  Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.3/specs
  Configured with: ../configure --prefix=/usr --mandir=/usr/share/man 
  --infodir=/usr/share/info --enable-shared --enable-threads=posix 
  --disable-checking --with-system-zlib --enable-__cxa_atexit 
  --host=i386-redhat-linux
  Thread model: posix
  gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-53)
 
  It happens because memcpy ends up being a macro, and this gcc dislikes
  having a preprocessor directive inside a macro argument. I don't know
  if if it's valid in general, but Documentation/Changes does say we
  still support gcc 3.2...

 
 Well, the fix is easy, can you provide a patch?

btw, sparse dislikes that ifdeffery also.

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: compile breakage due to [SK_BUFF]: Convert skb-end to sk_buff_data_t

2007-05-13 Thread Muli Ben-Yehuda
On Sun, May 13, 2007 at 08:27:35PM -0300, Arnaldo Carvalho de Melo wrote:

 Well, the fix is easy, can you provide a patch?

Sure, but I was hoping you had a follow-on patch to get rid of the
ugly ifdefs in .c files that would make it irrelevant? if not I'll
whip out the obvious patch.

Cheers,
Muli
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html