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

Commit b2510b16 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
  [NET]: Make skb_seq_read unmap the last fragment
  [NET]: Re-enable irqs before pushing pending DMA requests
  [TCP] tcp_read_sock: Allow recv_actor() return return negative error value.
  [PPP]: Fix osize too small errors when decoding mppe.
  [PPP]: Revert 606f585e
  [TIPC]: Fix infinite loop in netlink handler
  [SKBUFF]: Fix incorrect config #ifdef around skb_copy_secmark
  [IPV4]: include sysctl.h from inetdevice.h
  [IPV6] NDISC: Fix thinko to control Router Preference support.
  [NETFILTER]: nfctnetlink: Don't allow to change helper
  [NETFILTER]: nf_conntrack_sip: add missing message types containing RTP info
parents c8cbee61 5b5a60da
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -1708,7 +1708,18 @@ ppp_decompress_frame(struct ppp *ppp, struct sk_buff *skb)
		goto err;

	if (proto == PPP_COMP) {
		ns = dev_alloc_skb(ppp->mru + PPP_HDRLEN);
		int obuff_size;

		switch(ppp->rcomp->compress_proto) {
		case CI_MPPE:
			obuff_size = ppp->mru + PPP_HDRLEN + 1;
			break;
		default:
			obuff_size = ppp->mru + PPP_HDRLEN;
			break;
		}

		ns = dev_alloc_skb(obuff_size);
		if (ns == 0) {
			printk(KERN_ERR "ppp_decompress_frame: no memory\n");
			goto err;
+5 −5
Original line number Diff line number Diff line
@@ -493,14 +493,14 @@ mppe_decompress(void *arg, unsigned char *ibuf, int isize, unsigned char *obuf,

	/*
	 * Make sure we have enough room to decrypt the packet.
	 * To account for possible PFC we should only subtract 1
	 * byte whereas in mppe_compress() we added 2 bytes (+MPPE_OVHD);
	 * However, we assume no PFC, thus subtracting 2 bytes.
	 * Note that for our test we only subtract 1 byte whereas in
	 * mppe_compress() we added 2 bytes (+MPPE_OVHD);
	 * this is to account for possible PFC.
	 */
	if (osize < isize - MPPE_OVHD - 2) {
	if (osize < isize - MPPE_OVHD - 1) {
		printk(KERN_DEBUG "mppe_decompress[%d]: osize too small! "
		       "(have: %d need: %d)\n", state->unit,
		       osize, isize - MPPE_OVHD - 2);
		       osize, isize - MPPE_OVHD - 1);
		return DECOMP_ERROR;
	}
	osize = isize - MPPE_OVHD - 2;	/* assume no PFC */
+1 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
#include <linux/netdevice.h>
#include <linux/rcupdate.h>
#include <linux/timer.h>
#include <linux/sysctl.h>

struct ipv4_devconf
{
+1 −1
Original line number Diff line number Diff line
@@ -2009,6 +2009,7 @@ static void net_rx_action(struct softirq_action *h)
		}
	}
out:
	local_irq_enable();
#ifdef CONFIG_NET_DMA
	/*
	 * There may not be any more sk_buffs coming right now, so push
@@ -2022,7 +2023,6 @@ static void net_rx_action(struct softirq_action *h)
		rcu_read_unlock();
	}
#endif
	local_irq_enable();
	return;

softnet_break:
+6 −1
Original line number Diff line number Diff line
@@ -434,8 +434,8 @@ struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t gfp_mask)
	n->tc_verd = CLR_TC_MUNGED(n->tc_verd);
	C(iif);
#endif
	skb_copy_secmark(n, skb);
#endif
	skb_copy_secmark(n, skb);
	C(truesize);
	atomic_set(&n->users, 1);
	C(head);
@@ -1706,6 +1706,11 @@ unsigned int skb_seq_read(unsigned int consumed, const u8 **data,
		st->stepped_offset += frag->size;
	}

	if (st->frag_data) {
		kunmap_skb_frag(st->frag_data);
		st->frag_data = NULL;
	}

	if (st->cur_skb->next) {
		st->cur_skb = st->cur_skb->next;
		st->frag_idx = 0;
Loading