diff options
Diffstat (limited to 'net/ipv4/inet_fragment.c')
| -rw-r--r-- | net/ipv4/inet_fragment.c | 8 | 
1 files changed, 3 insertions, 5 deletions
diff --git a/net/ipv4/inet_fragment.c b/net/ipv4/inet_fragment.c index c5313a9c019..3b01959bf4b 100644 --- a/net/ipv4/inet_fragment.c +++ b/net/ipv4/inet_fragment.c @@ -93,9 +93,6 @@ void inet_frags_init(struct inet_frags *f)  	}  	rwlock_init(&f->lock); -	f->rnd = (u32) ((totalram_pages ^ (totalram_pages >> 7)) ^ -				   (jiffies ^ (jiffies >> 6))); -  	setup_timer(&f->secret_timer, inet_frag_secret_rebuild,  			(unsigned long)f);  	f->secret_timer.expires = jiffies + f->secret_interval; @@ -211,7 +208,7 @@ int inet_frag_evictor(struct netns_frags *nf, struct inet_frags *f, bool force)  	}  	work = frag_mem_limit(nf) - nf->low_thresh; -	while (work > 0) { +	while (work > 0 || force) {  		spin_lock(&nf->lru_lock);  		if (list_empty(&nf->lru_list)) { @@ -281,9 +278,10 @@ static struct inet_frag_queue *inet_frag_intern(struct netns_frags *nf,  	atomic_inc(&qp->refcnt);  	hlist_add_head(&qp->list, &hb->chain); +	inet_frag_lru_add(nf, qp);  	spin_unlock(&hb->chain_lock);  	read_unlock(&f->lock); -	inet_frag_lru_add(nf, qp); +  	return qp;  }  | 
