net: remove unused struct inet_frag_queue.fragments field
Now that all users of struct inet_frag_queue have been converted to use 'rb_fragments', remove the unused 'fragments' field. Build with `make allyesconfig` succeeded. ip_defrag selftest passed. Signed-off-by: Peter Oskolkov <posk@google.com> Acked-by: Stefan Schmidt <stefan@datenfreihafen.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
c14f7e1efc
Коммит
d8cf757fbd
|
@ -56,7 +56,6 @@ struct frag_v6_compare_key {
|
|||
* @timer: queue expiration timer
|
||||
* @lock: spinlock protecting this frag
|
||||
* @refcnt: reference count of the queue
|
||||
* @fragments: received fragments head
|
||||
* @rb_fragments: received fragments rb-tree root
|
||||
* @fragments_tail: received fragments tail
|
||||
* @last_run_head: the head of the last "run". see ip_fragment.c
|
||||
|
@ -77,8 +76,7 @@ struct inet_frag_queue {
|
|||
struct timer_list timer;
|
||||
spinlock_t lock;
|
||||
refcount_t refcnt;
|
||||
struct sk_buff *fragments; /* used in 6lopwpan IPv6. */
|
||||
struct rb_root rb_fragments; /* Used in IPv4/IPv6. */
|
||||
struct rb_root rb_fragments;
|
||||
struct sk_buff *fragments_tail;
|
||||
struct sk_buff *last_run_head;
|
||||
ktime_t stamp;
|
||||
|
|
|
@ -179,7 +179,6 @@ static int lowpan_frag_reasm(struct lowpan_frag_queue *fq, struct sk_buff *skb,
|
|||
|
||||
skb->dev = ldev;
|
||||
skb->tstamp = fq->q.stamp;
|
||||
fq->q.fragments = NULL;
|
||||
fq->q.rb_fragments = RB_ROOT;
|
||||
fq->q.fragments_tail = NULL;
|
||||
fq->q.last_run_head = NULL;
|
||||
|
|
|
@ -203,7 +203,6 @@ EXPORT_SYMBOL(inet_frag_rbtree_purge);
|
|||
|
||||
void inet_frag_destroy(struct inet_frag_queue *q)
|
||||
{
|
||||
struct sk_buff *fp;
|
||||
struct netns_frags *nf;
|
||||
unsigned int sum, sum_truesize = 0;
|
||||
struct inet_frags *f;
|
||||
|
@ -212,20 +211,9 @@ void inet_frag_destroy(struct inet_frag_queue *q)
|
|||
WARN_ON(del_timer(&q->timer) != 0);
|
||||
|
||||
/* Release all fragment data. */
|
||||
fp = q->fragments;
|
||||
nf = q->net;
|
||||
f = nf->f;
|
||||
if (fp) {
|
||||
do {
|
||||
struct sk_buff *xp = fp->next;
|
||||
|
||||
sum_truesize += fp->truesize;
|
||||
kfree_skb(fp);
|
||||
fp = xp;
|
||||
} while (fp);
|
||||
} else {
|
||||
sum_truesize = inet_frag_rbtree_purge(&q->rb_fragments);
|
||||
}
|
||||
sum_truesize = inet_frag_rbtree_purge(&q->rb_fragments);
|
||||
sum = sum_truesize + f->qsize;
|
||||
|
||||
call_rcu(&q->rcu, inet_frag_destroy_rcu);
|
||||
|
@ -489,26 +477,20 @@ EXPORT_SYMBOL(inet_frag_reasm_finish);
|
|||
|
||||
struct sk_buff *inet_frag_pull_head(struct inet_frag_queue *q)
|
||||
{
|
||||
struct sk_buff *head;
|
||||
struct sk_buff *head, *skb;
|
||||
|
||||
if (q->fragments) {
|
||||
head = q->fragments;
|
||||
q->fragments = head->next;
|
||||
} else {
|
||||
struct sk_buff *skb;
|
||||
head = skb_rb_first(&q->rb_fragments);
|
||||
if (!head)
|
||||
return NULL;
|
||||
skb = FRAG_CB(head)->next_frag;
|
||||
if (skb)
|
||||
rb_replace_node(&head->rbnode, &skb->rbnode,
|
||||
&q->rb_fragments);
|
||||
else
|
||||
rb_erase(&head->rbnode, &q->rb_fragments);
|
||||
memset(&head->rbnode, 0, sizeof(head->rbnode));
|
||||
barrier();
|
||||
|
||||
head = skb_rb_first(&q->rb_fragments);
|
||||
if (!head)
|
||||
return NULL;
|
||||
skb = FRAG_CB(head)->next_frag;
|
||||
if (skb)
|
||||
rb_replace_node(&head->rbnode, &skb->rbnode,
|
||||
&q->rb_fragments);
|
||||
else
|
||||
rb_erase(&head->rbnode, &q->rb_fragments);
|
||||
memset(&head->rbnode, 0, sizeof(head->rbnode));
|
||||
barrier();
|
||||
}
|
||||
if (head == q->fragments_tail)
|
||||
q->fragments_tail = NULL;
|
||||
|
||||
|
|
|
@ -261,7 +261,6 @@ static int ip_frag_reinit(struct ipq *qp)
|
|||
qp->q.flags = 0;
|
||||
qp->q.len = 0;
|
||||
qp->q.meat = 0;
|
||||
qp->q.fragments = NULL;
|
||||
qp->q.rb_fragments = RB_ROOT;
|
||||
qp->q.fragments_tail = NULL;
|
||||
qp->q.last_run_head = NULL;
|
||||
|
@ -451,7 +450,6 @@ static int ip_frag_reasm(struct ipq *qp, struct sk_buff *skb,
|
|||
ip_send_check(iph);
|
||||
|
||||
__IP_INC_STATS(net, IPSTATS_MIB_REASMOKS);
|
||||
qp->q.fragments = NULL;
|
||||
qp->q.rb_fragments = RB_ROOT;
|
||||
qp->q.fragments_tail = NULL;
|
||||
qp->q.last_run_head = NULL;
|
||||
|
|
|
@ -365,7 +365,6 @@ static int nf_ct_frag6_reasm(struct frag_queue *fq, struct sk_buff *skb,
|
|||
skb_network_header_len(skb),
|
||||
skb->csum);
|
||||
|
||||
fq->q.fragments = NULL;
|
||||
fq->q.rb_fragments = RB_ROOT;
|
||||
fq->q.fragments_tail = NULL;
|
||||
fq->q.last_run_head = NULL;
|
||||
|
|
|
@ -304,7 +304,6 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *skb,
|
|||
rcu_read_lock();
|
||||
__IP6_INC_STATS(net, __in6_dev_get(dev), IPSTATS_MIB_REASMOKS);
|
||||
rcu_read_unlock();
|
||||
fq->q.fragments = NULL;
|
||||
fq->q.rb_fragments = RB_ROOT;
|
||||
fq->q.fragments_tail = NULL;
|
||||
fq->q.last_run_head = NULL;
|
||||
|
|
Загрузка…
Ссылка в новой задаче