Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0417fa3 authored by David S. Miller's avatar David S. Miller
Browse files

net: Make qdisc_skb_cb upper size bound explicit.



Just like skb->cb[], so that qdisc_skb_cb can be encapsulated inside
of other data structures.

This is intended to be used by IPoIB so that it can remember
addressing information stored at hard_header_ops->create() time that
it can fetch when the packet gets to the transmit routine.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c056b734
Loading
Loading
Loading
Loading
+8 −1
Original line number Original line Diff line number Diff line
@@ -220,9 +220,16 @@ struct tcf_proto {


struct qdisc_skb_cb {
struct qdisc_skb_cb {
	unsigned int		pkt_len;
	unsigned int		pkt_len;
	long			data[];
	unsigned char		data[24];
};
};


static inline void qdisc_cb_private_validate(const struct sk_buff *skb, int sz)
{
	struct qdisc_skb_cb *qcb;
	BUILD_BUG_ON(sizeof(skb->cb) < sizeof(unsigned int) + sz);
	BUILD_BUG_ON(sizeof(qcb->data) < sz);
}

static inline int qdisc_qlen(const struct Qdisc *q)
static inline int qdisc_qlen(const struct Qdisc *q)
{
{
	return q->q.qlen;
	return q->q.qlen;
+1 −2
Original line number Original line Diff line number Diff line
@@ -148,8 +148,7 @@ struct choke_skb_cb {


static inline struct choke_skb_cb *choke_skb_cb(const struct sk_buff *skb)
static inline struct choke_skb_cb *choke_skb_cb(const struct sk_buff *skb)
{
{
	BUILD_BUG_ON(sizeof(skb->cb) <
	qdisc_cb_private_validate(skb, sizeof(struct choke_skb_cb));
		sizeof(struct qdisc_skb_cb) + sizeof(struct choke_skb_cb));
	return (struct choke_skb_cb *)qdisc_skb_cb(skb)->data;
	return (struct choke_skb_cb *)qdisc_skb_cb(skb)->data;
}
}


+1 −2
Original line number Original line Diff line number Diff line
@@ -130,8 +130,7 @@ struct netem_skb_cb {


static inline struct netem_skb_cb *netem_skb_cb(struct sk_buff *skb)
static inline struct netem_skb_cb *netem_skb_cb(struct sk_buff *skb)
{
{
	BUILD_BUG_ON(sizeof(skb->cb) <
	qdisc_cb_private_validate(skb, sizeof(struct netem_skb_cb));
		sizeof(struct qdisc_skb_cb) + sizeof(struct netem_skb_cb));
	return (struct netem_skb_cb *)qdisc_skb_cb(skb)->data;
	return (struct netem_skb_cb *)qdisc_skb_cb(skb)->data;
}
}


+1 −2
Original line number Original line Diff line number Diff line
@@ -94,8 +94,7 @@ struct sfb_skb_cb {


static inline struct sfb_skb_cb *sfb_skb_cb(const struct sk_buff *skb)
static inline struct sfb_skb_cb *sfb_skb_cb(const struct sk_buff *skb)
{
{
	BUILD_BUG_ON(sizeof(skb->cb) <
	qdisc_cb_private_validate(skb, sizeof(struct sfb_skb_cb));
		sizeof(struct qdisc_skb_cb) + sizeof(struct sfb_skb_cb));
	return (struct sfb_skb_cb *)qdisc_skb_cb(skb)->data;
	return (struct sfb_skb_cb *)qdisc_skb_cb(skb)->data;
}
}


+2 −3
Original line number Original line Diff line number Diff line
@@ -166,8 +166,7 @@ struct sfq_skb_cb {


static inline struct sfq_skb_cb *sfq_skb_cb(const struct sk_buff *skb)
static inline struct sfq_skb_cb *sfq_skb_cb(const struct sk_buff *skb)
{
{
       BUILD_BUG_ON(sizeof(skb->cb) <
	qdisc_cb_private_validate(skb, sizeof(struct sfq_skb_cb));
               sizeof(struct qdisc_skb_cb) + sizeof(struct sfq_skb_cb));
	return (struct sfq_skb_cb *)qdisc_skb_cb(skb)->data;
	return (struct sfq_skb_cb *)qdisc_skb_cb(skb)->data;
}
}