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

Commit 510c8a89 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull networking fixes from David Miller:

 1) Fix TCP checksum offload handling in iwlwifi driver, from Emmanuel
    Grumbach.

 2) In ksz DSA tagging code, free SKB if skb_put_padto() fails. From
    Vivien Didelot.

 3) Fix two regressions with bonding on wireless, from Andreas Born.

 4) Fix build when busypoll is disabled, from Daniel Borkmann.

 5) Fix copy_linear_skb() wrt. SO_PEEK_OFF, from Eric Dumazet.

 6) Set SKB cached route properly in inet_rtm_getroute(), from Florian
    Westphal.

 7) Fix PCI-E relaxed ordering handling in cxgb4 driver, from Ding
    Tianhong.

 8) Fix module refcnt leak in ULP code, from Sabrina Dubroca.

 9) Fix use of GFP_KERNEL in atomic contexts in AF_KEY code, from Eric
    Dumazet.

10) Need to purge socket write queue in dccp_destroy_sock(), also from
    Eric Dumazet.

11) Make bpf_trace_printk() work properly on 32-bit architectures, from
    Daniel Borkmann.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (47 commits)
  bpf: fix bpf_trace_printk on 32 bit archs
  PCI: fix oops when try to find Root Port for a PCI device
  sfc: don't try and read ef10 data on non-ef10 NIC
  net_sched: remove warning from qdisc_hash_add
  net_sched/sfq: update hierarchical backlog when drop packet
  net_sched: reset pointers to tcf blocks in classful qdiscs' destructors
  ipv4: fix NULL dereference in free_fib_info_rcu()
  net: Fix a typo in comment about sock flags.
  ipv6: fix NULL dereference in ip6_route_dev_notify()
  tcp: fix possible deadlock in TCP stack vs BPF filter
  dccp: purge write queue in dccp_destroy_sock()
  udp: fix linear skb reception with PEEK_OFF
  ipv6: release rt6->rt6i_idev properly during ifdown
  af_key: do not use GFP_KERNEL in atomic contexts
  tcp: ulp: avoid module refcnt leak in tcp_set_ulp
  net/cxgb4vf: Use new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag
  net/cxgb4: Use new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag
  PCI: Disable Relaxed Ordering Attributes for AMD A1100
  PCI: Disable Relaxed Ordering for some Intel processors
  PCI: Disable PCIe Relaxed Ordering if unsupported
  ...
parents 40c6d1b9 88a5c690
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -26,7 +26,7 @@


#define FSM_TIMER_DEBUG 0
#define FSM_TIMER_DEBUG 0


void
int
mISDN_FsmNew(struct Fsm *fsm,
mISDN_FsmNew(struct Fsm *fsm,
	     struct FsmNode *fnlist, int fncount)
	     struct FsmNode *fnlist, int fncount)
{
{
@@ -34,6 +34,8 @@ mISDN_FsmNew(struct Fsm *fsm,


	fsm->jumpmatrix = kzalloc(sizeof(FSMFNPTR) * fsm->state_count *
	fsm->jumpmatrix = kzalloc(sizeof(FSMFNPTR) * fsm->state_count *
				  fsm->event_count, GFP_KERNEL);
				  fsm->event_count, GFP_KERNEL);
	if (fsm->jumpmatrix == NULL)
		return -ENOMEM;


	for (i = 0; i < fncount; i++)
	for (i = 0; i < fncount; i++)
		if ((fnlist[i].state >= fsm->state_count) ||
		if ((fnlist[i].state >= fsm->state_count) ||
@@ -45,6 +47,7 @@ mISDN_FsmNew(struct Fsm *fsm,
		} else
		} else
			fsm->jumpmatrix[fsm->state_count * fnlist[i].event +
			fsm->jumpmatrix[fsm->state_count * fnlist[i].event +
					fnlist[i].state] = (FSMFNPTR) fnlist[i].routine;
					fnlist[i].state] = (FSMFNPTR) fnlist[i].routine;
	return 0;
}
}
EXPORT_SYMBOL(mISDN_FsmNew);
EXPORT_SYMBOL(mISDN_FsmNew);


+1 −1
Original line number Original line Diff line number Diff line
@@ -55,7 +55,7 @@ struct FsmTimer {
	void *arg;
	void *arg;
};
};


extern void mISDN_FsmNew(struct Fsm *, struct FsmNode *, int);
extern int mISDN_FsmNew(struct Fsm *, struct FsmNode *, int);
extern void mISDN_FsmFree(struct Fsm *);
extern void mISDN_FsmFree(struct Fsm *);
extern int mISDN_FsmEvent(struct FsmInst *, int , void *);
extern int mISDN_FsmEvent(struct FsmInst *, int , void *);
extern void mISDN_FsmChangeState(struct FsmInst *, int);
extern void mISDN_FsmChangeState(struct FsmInst *, int);
+1 −2
Original line number Original line Diff line number Diff line
@@ -414,8 +414,7 @@ l1_init(u_int *deb)
	l1fsm_s.event_count = L1_EVENT_COUNT;
	l1fsm_s.event_count = L1_EVENT_COUNT;
	l1fsm_s.strEvent = strL1Event;
	l1fsm_s.strEvent = strL1Event;
	l1fsm_s.strState = strL1SState;
	l1fsm_s.strState = strL1SState;
	mISDN_FsmNew(&l1fsm_s, L1SFnList, ARRAY_SIZE(L1SFnList));
	return mISDN_FsmNew(&l1fsm_s, L1SFnList, ARRAY_SIZE(L1SFnList));
	return 0;
}
}


void
void
+13 −2
Original line number Original line Diff line number Diff line
@@ -2247,15 +2247,26 @@ static struct Bprotocol X75SLP = {
int
int
Isdnl2_Init(u_int *deb)
Isdnl2_Init(u_int *deb)
{
{
	int res;
	debug = deb;
	debug = deb;
	mISDN_register_Bprotocol(&X75SLP);
	mISDN_register_Bprotocol(&X75SLP);
	l2fsm.state_count = L2_STATE_COUNT;
	l2fsm.state_count = L2_STATE_COUNT;
	l2fsm.event_count = L2_EVENT_COUNT;
	l2fsm.event_count = L2_EVENT_COUNT;
	l2fsm.strEvent = strL2Event;
	l2fsm.strEvent = strL2Event;
	l2fsm.strState = strL2State;
	l2fsm.strState = strL2State;
	mISDN_FsmNew(&l2fsm, L2FnList, ARRAY_SIZE(L2FnList));
	res = mISDN_FsmNew(&l2fsm, L2FnList, ARRAY_SIZE(L2FnList));
	TEIInit(deb);
	if (res)
		goto error;
	res = TEIInit(deb);
	if (res)
		goto error_fsm;
	return 0;
	return 0;

error_fsm:
	mISDN_FsmFree(&l2fsm);
error:
	mISDN_unregister_Bprotocol(&X75SLP);
	return res;
}
}


void
void
+17 −3
Original line number Original line Diff line number Diff line
@@ -1387,23 +1387,37 @@ create_teimanager(struct mISDNdevice *dev)


int TEIInit(u_int *deb)
int TEIInit(u_int *deb)
{
{
	int res;
	debug = deb;
	debug = deb;
	teifsmu.state_count = TEI_STATE_COUNT;
	teifsmu.state_count = TEI_STATE_COUNT;
	teifsmu.event_count = TEI_EVENT_COUNT;
	teifsmu.event_count = TEI_EVENT_COUNT;
	teifsmu.strEvent = strTeiEvent;
	teifsmu.strEvent = strTeiEvent;
	teifsmu.strState = strTeiState;
	teifsmu.strState = strTeiState;
	mISDN_FsmNew(&teifsmu, TeiFnListUser, ARRAY_SIZE(TeiFnListUser));
	res = mISDN_FsmNew(&teifsmu, TeiFnListUser, ARRAY_SIZE(TeiFnListUser));
	if (res)
		goto error;
	teifsmn.state_count = TEI_STATE_COUNT;
	teifsmn.state_count = TEI_STATE_COUNT;
	teifsmn.event_count = TEI_EVENT_COUNT;
	teifsmn.event_count = TEI_EVENT_COUNT;
	teifsmn.strEvent = strTeiEvent;
	teifsmn.strEvent = strTeiEvent;
	teifsmn.strState = strTeiState;
	teifsmn.strState = strTeiState;
	mISDN_FsmNew(&teifsmn, TeiFnListNet, ARRAY_SIZE(TeiFnListNet));
	res = mISDN_FsmNew(&teifsmn, TeiFnListNet, ARRAY_SIZE(TeiFnListNet));
	if (res)
		goto error_smn;
	deactfsm.state_count =  DEACT_STATE_COUNT;
	deactfsm.state_count =  DEACT_STATE_COUNT;
	deactfsm.event_count = DEACT_EVENT_COUNT;
	deactfsm.event_count = DEACT_EVENT_COUNT;
	deactfsm.strEvent = strDeactEvent;
	deactfsm.strEvent = strDeactEvent;
	deactfsm.strState = strDeactState;
	deactfsm.strState = strDeactState;
	mISDN_FsmNew(&deactfsm, DeactFnList, ARRAY_SIZE(DeactFnList));
	res = mISDN_FsmNew(&deactfsm, DeactFnList, ARRAY_SIZE(DeactFnList));
	if (res)
		goto error_deact;
	return 0;
	return 0;

error_deact:
	mISDN_FsmFree(&teifsmn);
error_smn:
	mISDN_FsmFree(&teifsmu);
error:
	return res;
}
}


void TEIFree(void)
void TEIFree(void)
Loading