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

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

1) GRE tunnel drivers don't set the transport header properly, they also
   blindly deref the inner protocol ipv4 and needs some checks.  Fixes
   from Isaku Yamahata.

2) Fix sleeps while atomic in netdevice rename code, from Eric Dumazet.

3) Fix double-spinlock in solos-pci driver, from Dan Carpenter.

4) More ARP bug fixes.  Fix lockdep splat in arp_solicit() and then the
   bug accidentally added by that fix.  From Eric Dumazet and Cong Wang.

5) Remove some __dev* annotations that slipped back in, as well as all
   HOTPLUG references.  From Greg KH

6) RDS protocol uses wrong interfaces to access scatter-gather elements,
   causing a regression.  From Mike Marciniszyn.

7) Fix build error in cpts driver, from Richard Cochran.

8) Fix arithmetic in packet scheduler, from Stefan Hasko.

9) Similarly, fix association during calculation of random backoff in
   batman-adv.  From Akinobu Mita.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (21 commits)
  ipv6/ip6_gre: set transport header correctly
  ipv4/ip_gre: set transport header correctly to gre header
  IB/rds: suppress incompatible protocol when version is known
  IB/rds: Correct ib_api use with gs_dma_address/sg_dma_len
  net/vxlan: Use the underlying device index when joining/leaving multicast groups
  tcp: should drop incoming frames without ACK flag set
  netprio_cgroup: define sk_cgrp_prioidx only if NETPRIO_CGROUP is enabled
  cpts: fix a run time warn_on.
  cpts: fix build error by removing useless code.
  batman-adv: fix random jitter calculation
  arp: fix a regression in arp_solicit()
  net: sched: integer overflow fix
  CONFIG_HOTPLUG removal from networking core
  Drivers: network: more __dev* removal
  bridge: call br_netpoll_disable in br_add_if
  ipv4: arp: fix a lockdep splat in arp_solicit()
  tuntap: dont use a private kmem_cache
  net: devnet_rename_seq should be a seqcount
  ip_gre: fix possible use after free
  ip_gre: make ipgre_tunnel_xmit() not parse network header as IP unconditionally
  ...
parents ad4b3fb7 ae782bb1
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -538,7 +538,7 @@ static ssize_t geos_gpio_store(struct device *dev, struct device_attribute *attr
	} else {
	} else {
		count = -EINVAL;
		count = -EINVAL;
	}
	}
	spin_lock_irq(&card->param_queue_lock);
	spin_unlock_irq(&card->param_queue_lock);
	return count;
	return count;
}
}


+3 −3
Original line number Original line Diff line number Diff line
@@ -141,7 +141,7 @@ static int orion_mdio_reset(struct mii_bus *bus)
	return 0;
	return 0;
}
}


static int __devinit orion_mdio_probe(struct platform_device *pdev)
static int orion_mdio_probe(struct platform_device *pdev)
{
{
	struct device_node *np = pdev->dev.of_node;
	struct device_node *np = pdev->dev.of_node;
	struct mii_bus *bus;
	struct mii_bus *bus;
@@ -197,7 +197,7 @@ static int __devinit orion_mdio_probe(struct platform_device *pdev)
	return 0;
	return 0;
}
}


static int __devexit orion_mdio_remove(struct platform_device *pdev)
static int orion_mdio_remove(struct platform_device *pdev)
{
{
	struct mii_bus *bus = platform_get_drvdata(pdev);
	struct mii_bus *bus = platform_get_drvdata(pdev);
	mdiobus_unregister(bus);
	mdiobus_unregister(bus);
@@ -214,7 +214,7 @@ MODULE_DEVICE_TABLE(of, orion_mdio_match);


static struct platform_driver orion_mdio_driver = {
static struct platform_driver orion_mdio_driver = {
	.probe = orion_mdio_probe,
	.probe = orion_mdio_probe,
	.remove = __devexit_p(orion_mdio_remove),
	.remove = orion_mdio_remove,
	.driver = {
	.driver = {
		.name = "orion-mdio",
		.name = "orion-mdio",
		.of_match_table = orion_mdio_match,
		.of_match_table = orion_mdio_match,
+9 −10
Original line number Original line Diff line number Diff line
@@ -635,7 +635,7 @@ static void mvneta_rxq_bm_disable(struct mvneta_port *pp,




/* Sets the RGMII Enable bit (RGMIIEn) in port MAC control register */
/* Sets the RGMII Enable bit (RGMIIEn) in port MAC control register */
static void __devinit mvneta_gmac_rgmii_set(struct mvneta_port *pp, int enable)
static void mvneta_gmac_rgmii_set(struct mvneta_port *pp, int enable)
{
{
	u32  val;
	u32  val;


@@ -650,7 +650,7 @@ static void __devinit mvneta_gmac_rgmii_set(struct mvneta_port *pp, int enable)
}
}


/* Config SGMII port */
/* Config SGMII port */
static void __devinit mvneta_port_sgmii_config(struct mvneta_port *pp)
static void mvneta_port_sgmii_config(struct mvneta_port *pp)
{
{
	u32 val;
	u32 val;


@@ -2564,7 +2564,7 @@ const struct ethtool_ops mvneta_eth_tool_ops = {
};
};


/* Initialize hw */
/* Initialize hw */
static int __devinit mvneta_init(struct mvneta_port *pp, int phy_addr)
static int mvneta_init(struct mvneta_port *pp, int phy_addr)
{
{
	int queue;
	int queue;


@@ -2613,8 +2613,7 @@ static void mvneta_deinit(struct mvneta_port *pp)
}
}


/* platform glue : initialize decoding windows */
/* platform glue : initialize decoding windows */
static void __devinit
static void mvneta_conf_mbus_windows(struct mvneta_port *pp,
mvneta_conf_mbus_windows(struct mvneta_port *pp,
				     const struct mbus_dram_target_info *dram)
				     const struct mbus_dram_target_info *dram)
{
{
	u32 win_enable;
	u32 win_enable;
@@ -2648,7 +2647,7 @@ mvneta_conf_mbus_windows(struct mvneta_port *pp,
}
}


/* Power up the port */
/* Power up the port */
static void __devinit mvneta_port_power_up(struct mvneta_port *pp, int phy_mode)
static void mvneta_port_power_up(struct mvneta_port *pp, int phy_mode)
{
{
	u32 val;
	u32 val;


@@ -2671,7 +2670,7 @@ static void __devinit mvneta_port_power_up(struct mvneta_port *pp, int phy_mode)
}
}


/* Device initialization routine */
/* Device initialization routine */
static int __devinit mvneta_probe(struct platform_device *pdev)
static int mvneta_probe(struct platform_device *pdev)
{
{
	const struct mbus_dram_target_info *dram_target_info;
	const struct mbus_dram_target_info *dram_target_info;
	struct device_node *dn = pdev->dev.of_node;
	struct device_node *dn = pdev->dev.of_node;
@@ -2803,7 +2802,7 @@ err_free_netdev:
}
}


/* Device removal routine */
/* Device removal routine */
static int __devexit mvneta_remove(struct platform_device *pdev)
static int mvneta_remove(struct platform_device *pdev)
{
{
	struct net_device  *dev = platform_get_drvdata(pdev);
	struct net_device  *dev = platform_get_drvdata(pdev);
	struct mvneta_port *pp = netdev_priv(dev);
	struct mvneta_port *pp = netdev_priv(dev);
@@ -2828,7 +2827,7 @@ MODULE_DEVICE_TABLE(of, mvneta_match);


static struct platform_driver mvneta_driver = {
static struct platform_driver mvneta_driver = {
	.probe = mvneta_probe,
	.probe = mvneta_probe,
	.remove = __devexit_p(mvneta_remove),
	.remove = mvneta_remove,
	.driver = {
	.driver = {
		.name = MVNETA_DRIVER_NAME,
		.name = MVNETA_DRIVER_NAME,
		.of_match_table = mvneta_match,
		.of_match_table = mvneta_match,
+1 −2
Original line number Original line Diff line number Diff line
@@ -247,8 +247,7 @@ static void cpts_clk_init(struct cpts *cpts)
		cpts->refclk = NULL;
		cpts->refclk = NULL;
		return;
		return;
	}
	}
	clk_enable(cpts->refclk);
	clk_prepare_enable(cpts->refclk);
	cpts->freq = cpts->refclk->recalc(cpts->refclk);
}
}


static void cpts_clk_release(struct cpts *cpts)
static void cpts_clk_release(struct cpts *cpts)
+0 −1
Original line number Original line Diff line number Diff line
@@ -120,7 +120,6 @@ struct cpts {
	struct delayed_work overflow_work;
	struct delayed_work overflow_work;
	int phc_index;
	int phc_index;
	struct clk *refclk;
	struct clk *refclk;
	unsigned long freq;
	struct list_head events;
	struct list_head events;
	struct list_head pool;
	struct list_head pool;
	struct cpts_event pool_data[CPTS_MAX_EVENTS];
	struct cpts_event pool_data[CPTS_MAX_EVENTS];
Loading