Skip to contentSkip to conversation

Update embedded copy of ethtool.h from kernel 2.6.30

PATCH In review Jesper Nilsson 2 participants 5 messages Dec 1, 2009

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Update embedded copy of ethtool.h from kernel 2.6.30

Commit 0c09c1a49cc7b819b33566a49d9901f7cfdd6889 in the Linux kernel added a new field mdio_support inside the struct ethtool_cmd, changing the struct size for architectures that does not pad structs. (for example the CRIS architecture)

This size mismatch lead to the ethtool_cmd struct being written as 44 bytes in the kernel, but only 43 bytes allocated on stack, overwriting one byte in the stack frame.

Update the ethtool copy of the definition to match the 2.6.30 kernel.

---
 ethtool-copy.h |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)
ethtool-copy.h +5 -2
index eadba25..fa92515 100644
@@ -23,11 +23,14 @@ struct ethtool_cmd {
 	__u8	phy_address;
 	__u8	transceiver;	/* Which transceiver to use */
 	__u8	autoneg;	/* Enable or disable autonegotiation */
+	__u8	mdio_support;
 	__u32	maxtxpkt;	/* Tx pkts before generating tx int */
 	__u32	maxrxpkt;	/* Rx pkts before generating rx int */
 	__u16	speed_hi;
-	__u16	reserved2;
-	__u32	reserved[3];
+	__u8	eth_tp_mdix;
+	__u8	reserved2;
+	__u32	lp_advertising;	/* Features the link partner advertises */
+	__u32	reserved[2];
 };
 
 static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep,
Signature · 5 lines
1.6.4.GIT

/^JN - Jesper Nilsson
-- 
               Jesper Nilsson -- [email protected]
#1 lore raw
Quoted 4 lines · Jesper Nilsson

Commit 0c09c1a49cc7b819b33566a49d9901f7cfdd6889 in the Linux kernel added a new field mdio_support inside the struct ethtool_cmd, changing the struct size for architectures that does not pad structs. (for example the CRIS architecture)

CRIS has no alignment requirements?! Wow. Sorry for changing the structure, then.

Quoted 5 lines

This size mismatch lead to the ethtool_cmd struct being written as 44 bytes in the kernel, but only 43 bytes allocated on stack, overwriting one byte in the stack frame.

Update the ethtool copy of the definition to match the 2.6.30 kernel.

[...]

This has already been done.

Ben.

Signature · 3 lines
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
#2 lore raw
Quoted 7 lines · Ben Hutchings
Quoted 4 lines · Jesper Nilsson

Commit 0c09c1a49cc7b819b33566a49d9901f7cfdd6889 in the Linux kernel added a new field mdio_support inside the struct ethtool_cmd, changing the struct size for architectures that does not pad structs. (for example the CRIS architecture)

CRIS has no alignment requirements?! Wow.

Yep, we don't even have the choice of adding padding inside structs. :-(

Quoted 2 lines

Sorry for changing the
structure, then.

We're used to tripping over this kind of thing. :-)

Quoted 8 lines
Quoted 5 lines

This size mismatch lead to the ethtool_cmd struct being written as 44 bytes in the kernel, but only 43 bytes allocated on stack, overwriting one byte in the stack frame.

Update the ethtool copy of the definition to match the 2.6.30 kernel.

[...]

This has already been done.

Ah? Could someone point me to the correct git-tree for ethtool then? I've been using http://www.kernel.org/pub/scm/network/ethtool/ethtool.git
which still has this problem...

Quoted 1 line

Ben.

/^JN - Jesper Nilsson

Signature · 1 line
               Jesper Nilsson -- [email protected]
#3 lore raw
Quoted 2 lines · Jesper Nilsson
Quoted 1 line · Ben Hutchings

On Tue, 2009-12-01 at 16:17 +0100, Jesper Nilsson wrote:

[...]

Quoted 4 lines
Quoted 4 lines
Quoted 4 lines

This size mismatch lead to the ethtool_cmd struct being written as 44 bytes in the kernel, but only 43 bytes allocated on stack, overwriting one byte in the stack frame.

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

Update the ethtool copy of the definition to match the 2.6.30 kernel.

[...]

This has already been done.

Ah? Could someone point me to the correct git-tree for ethtool then? I've been using http://www.kernel.org/pub/scm/network/ethtool/ethtool.git
which still has this problem...

That's the correct repository. It is possible that the extra static information needed to serve it over HTTP is not up-to-date. Try using git protocol instead?

Ben.

Signature · 3 lines
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
#4 lore raw
Quoted 6 lines · Ben Hutchings
Quoted 2 lines · Jesper Nilsson
Quoted 1 line · Ben Hutchings

On Tue, 2009-12-01 at 16:17 +0100, Jesper Nilsson wrote:

That's the correct repository. It is possible that the extra static information needed to serve it over HTTP is not up-to-date. Try using git protocol instead?

Yep, that was it, looks much better now. Thanks.

Quoted 1 line

Ben.

/^JN - Jesper Nilsson

Signature · 1 line
               Jesper Nilsson -- [email protected]