Re: [PATCH 44/58] net: ethernet: sun: Convert timers to use timer_setup()

2017-10-17 Thread Shannon Nelson

On 10/16/2017 5:29 PM, Kees Cook wrote:

In preparation for unconditionally passing the struct timer_list pointer to
all timer callbacks, switch to using the new timer_setup() and from_timer()
to pass the timer pointer explicitly.

Cc: "David S. Miller" 
Cc: Philippe Reynes 
Cc: Jarod Wilson 
Cc: Shannon Nelson 
Cc: Rob Herring 
Cc: chris hyser 
Cc: Tushar Dave 
Cc: Tobias Klauser 
Cc: net...@vger.kernel.org
Signed-off-by: Kees Cook 


Acked-by: Shannon Nelson 


---
  drivers/net/ethernet/sun/cassini.c|  7 ---
  drivers/net/ethernet/sun/ldmvsw.c |  3 +--
  drivers/net/ethernet/sun/niu.c| 10 --
  drivers/net/ethernet/sun/sunbmac.c| 10 --
  drivers/net/ethernet/sun/sungem.c |  6 +++---
  drivers/net/ethernet/sun/sunhme.c | 10 --
  drivers/net/ethernet/sun/sunvnet.c|  3 +--
  drivers/net/ethernet/sun/sunvnet_common.c |  4 ++--
  drivers/net/ethernet/sun/sunvnet_common.h |  2 +-
  9 files changed, 24 insertions(+), 31 deletions(-)

diff --git a/drivers/net/ethernet/sun/cassini.c 
b/drivers/net/ethernet/sun/cassini.c
index a74d78f64af9..113bd57e2ea0 100644
--- a/drivers/net/ethernet/sun/cassini.c
+++ b/drivers/net/ethernet/sun/cassini.c
@@ -4079,9 +4079,9 @@ static void cas_reset_task(struct work_struct *work)
  #endif
  }
  
-static void cas_link_timer(unsigned long data)

+static void cas_link_timer(struct timer_list *t)
  {
-   struct cas *cp = (struct cas *) data;
+   struct cas *cp = from_timer(cp, t, link_timer);
int mask, pending = 0, reset = 0;
unsigned long flags;
  
@@ -5039,7 +5039,8 @@ static int cas_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)

spin_lock_init(>stat_lock[N_TX_RINGS]);
mutex_init(>pm_mutex);
  
-	setup_timer(>link_timer, cas_link_timer, (unsigned long)cp);

+   timer_setup(>link_timer, cas_link_timer, 0);
+
  #if 1
/* Just in case the implementation of atomic operations
 * change so that an explicit initialization is necessary.
diff --git a/drivers/net/ethernet/sun/ldmvsw.c 
b/drivers/net/ethernet/sun/ldmvsw.c
index 5feeaa9f0a9e..5ea037672e6f 100644
--- a/drivers/net/ethernet/sun/ldmvsw.c
+++ b/drivers/net/ethernet/sun/ldmvsw.c
@@ -363,8 +363,7 @@ static int vsw_port_probe(struct vio_dev *vdev, const 
struct vio_device_id *id)
list_add_rcu(>list, >port_list);
spin_unlock_irqrestore(>lock, flags);
  
-	setup_timer(>clean_timer, sunvnet_clean_timer_expire_common,

-   (unsigned long)port);
+   timer_setup(>clean_timer, sunvnet_clean_timer_expire_common, 0);
  
  	err = register_netdev(dev);

if (err) {
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index bde19b307d0d..ab502ee35fb2 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -2221,9 +2221,9 @@ static int niu_link_status(struct niu *np, int *link_up_p)
return err;
  }
  
-static void niu_timer(unsigned long __opaque)

+static void niu_timer(struct timer_list *t)
  {
-   struct niu *np = (struct niu *) __opaque;
+   struct niu *np = from_timer(np, t, timer);
unsigned long off;
int err, link_up;
  
@@ -6123,7 +6123,7 @@ static int niu_open(struct net_device *dev)
  
  	err = niu_init_hw(np);

if (!err) {
-   setup_timer(>timer, niu_timer, (unsigned long)np);
+   timer_setup(>timer, niu_timer, 0);
np->timer.expires = jiffies + HZ;
  
  		err = niu_enable_interrupts(np, 1);

@@ -6773,10 +6773,8 @@ static int niu_change_mtu(struct net_device *dev, int 
new_mtu)
  
  	err = niu_init_hw(np);

if (!err) {
-   init_timer(>timer);
+   timer_setup(>timer, niu_timer, 0);
np->timer.expires = jiffies + HZ;
-   np->timer.data = (unsigned long) np;
-   np->timer.function = niu_timer;
  
  		err = niu_enable_interrupts(np, 1);

if (err)
diff --git a/drivers/net/ethernet/sun/sunbmac.c 
b/drivers/net/ethernet/sun/sunbmac.c
index 3189722110c2..0b1f41f6bceb 100644
--- a/drivers/net/ethernet/sun/sunbmac.c
+++ b/drivers/net/ethernet/sun/sunbmac.c
@@ -523,9 +523,9 @@ static int try_next_permutation(struct bigmac *bp, void 
__iomem *tregs)
return -1;
  }
  
-static void bigmac_timer(unsigned long data)

+static void bigmac_timer(struct timer_list *t)
  {
-   struct bigmac *bp = (struct bigmac *) data;
+   struct bigmac *bp = from_timer(bp, t, bigmac_timer);
void __iomem *tregs = bp->tregs;
int restart_timer = 0;
  
@@ -613,8 +613,6 @@ static void bigmac_begin_auto_negotiation(struct bigmac *bp)

bp->timer_state = ltrywait;
bp->timer_ticks = 0;

Re: [PATCH 44/58] net: ethernet: sun: Convert timers to use timer_setup()

2017-10-17 Thread Shannon Nelson

On 10/16/2017 5:29 PM, Kees Cook wrote:

In preparation for unconditionally passing the struct timer_list pointer to
all timer callbacks, switch to using the new timer_setup() and from_timer()
to pass the timer pointer explicitly.

Cc: "David S. Miller" 
Cc: Philippe Reynes 
Cc: Jarod Wilson 
Cc: Shannon Nelson 
Cc: Rob Herring 
Cc: chris hyser 
Cc: Tushar Dave 
Cc: Tobias Klauser 
Cc: net...@vger.kernel.org
Signed-off-by: Kees Cook 


Acked-by: Shannon Nelson 


---
  drivers/net/ethernet/sun/cassini.c|  7 ---
  drivers/net/ethernet/sun/ldmvsw.c |  3 +--
  drivers/net/ethernet/sun/niu.c| 10 --
  drivers/net/ethernet/sun/sunbmac.c| 10 --
  drivers/net/ethernet/sun/sungem.c |  6 +++---
  drivers/net/ethernet/sun/sunhme.c | 10 --
  drivers/net/ethernet/sun/sunvnet.c|  3 +--
  drivers/net/ethernet/sun/sunvnet_common.c |  4 ++--
  drivers/net/ethernet/sun/sunvnet_common.h |  2 +-
  9 files changed, 24 insertions(+), 31 deletions(-)

diff --git a/drivers/net/ethernet/sun/cassini.c 
b/drivers/net/ethernet/sun/cassini.c
index a74d78f64af9..113bd57e2ea0 100644
--- a/drivers/net/ethernet/sun/cassini.c
+++ b/drivers/net/ethernet/sun/cassini.c
@@ -4079,9 +4079,9 @@ static void cas_reset_task(struct work_struct *work)
  #endif
  }
  
-static void cas_link_timer(unsigned long data)

+static void cas_link_timer(struct timer_list *t)
  {
-   struct cas *cp = (struct cas *) data;
+   struct cas *cp = from_timer(cp, t, link_timer);
int mask, pending = 0, reset = 0;
unsigned long flags;
  
@@ -5039,7 +5039,8 @@ static int cas_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)

spin_lock_init(>stat_lock[N_TX_RINGS]);
mutex_init(>pm_mutex);
  
-	setup_timer(>link_timer, cas_link_timer, (unsigned long)cp);

+   timer_setup(>link_timer, cas_link_timer, 0);
+
  #if 1
/* Just in case the implementation of atomic operations
 * change so that an explicit initialization is necessary.
diff --git a/drivers/net/ethernet/sun/ldmvsw.c 
b/drivers/net/ethernet/sun/ldmvsw.c
index 5feeaa9f0a9e..5ea037672e6f 100644
--- a/drivers/net/ethernet/sun/ldmvsw.c
+++ b/drivers/net/ethernet/sun/ldmvsw.c
@@ -363,8 +363,7 @@ static int vsw_port_probe(struct vio_dev *vdev, const 
struct vio_device_id *id)
list_add_rcu(>list, >port_list);
spin_unlock_irqrestore(>lock, flags);
  
-	setup_timer(>clean_timer, sunvnet_clean_timer_expire_common,

-   (unsigned long)port);
+   timer_setup(>clean_timer, sunvnet_clean_timer_expire_common, 0);
  
  	err = register_netdev(dev);

if (err) {
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index bde19b307d0d..ab502ee35fb2 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -2221,9 +2221,9 @@ static int niu_link_status(struct niu *np, int *link_up_p)
return err;
  }
  
-static void niu_timer(unsigned long __opaque)

+static void niu_timer(struct timer_list *t)
  {
-   struct niu *np = (struct niu *) __opaque;
+   struct niu *np = from_timer(np, t, timer);
unsigned long off;
int err, link_up;
  
@@ -6123,7 +6123,7 @@ static int niu_open(struct net_device *dev)
  
  	err = niu_init_hw(np);

if (!err) {
-   setup_timer(>timer, niu_timer, (unsigned long)np);
+   timer_setup(>timer, niu_timer, 0);
np->timer.expires = jiffies + HZ;
  
  		err = niu_enable_interrupts(np, 1);

@@ -6773,10 +6773,8 @@ static int niu_change_mtu(struct net_device *dev, int 
new_mtu)
  
  	err = niu_init_hw(np);

if (!err) {
-   init_timer(>timer);
+   timer_setup(>timer, niu_timer, 0);
np->timer.expires = jiffies + HZ;
-   np->timer.data = (unsigned long) np;
-   np->timer.function = niu_timer;
  
  		err = niu_enable_interrupts(np, 1);

if (err)
diff --git a/drivers/net/ethernet/sun/sunbmac.c 
b/drivers/net/ethernet/sun/sunbmac.c
index 3189722110c2..0b1f41f6bceb 100644
--- a/drivers/net/ethernet/sun/sunbmac.c
+++ b/drivers/net/ethernet/sun/sunbmac.c
@@ -523,9 +523,9 @@ static int try_next_permutation(struct bigmac *bp, void 
__iomem *tregs)
return -1;
  }
  
-static void bigmac_timer(unsigned long data)

+static void bigmac_timer(struct timer_list *t)
  {
-   struct bigmac *bp = (struct bigmac *) data;
+   struct bigmac *bp = from_timer(bp, t, bigmac_timer);
void __iomem *tregs = bp->tregs;
int restart_timer = 0;
  
@@ -613,8 +613,6 @@ static void bigmac_begin_auto_negotiation(struct bigmac *bp)

bp->timer_state = ltrywait;
bp->timer_ticks = 0;
bp->bigmac_timer.expires = jiffies + (12 * HZ) / 10;
-   bp->bigmac_timer.data = (unsigned long) bp;
-   bp->bigmac_timer.function = bigmac_timer;
add_timer(>bigmac_timer);
  }
  
@@ -921,7 +919,7 @@ static 

[PATCH 44/58] net: ethernet: sun: Convert timers to use timer_setup()

2017-10-16 Thread Kees Cook
In preparation for unconditionally passing the struct timer_list pointer to
all timer callbacks, switch to using the new timer_setup() and from_timer()
to pass the timer pointer explicitly.

Cc: "David S. Miller" 
Cc: Philippe Reynes 
Cc: Jarod Wilson 
Cc: Shannon Nelson 
Cc: Rob Herring 
Cc: chris hyser 
Cc: Tushar Dave 
Cc: Tobias Klauser 
Cc: net...@vger.kernel.org
Signed-off-by: Kees Cook 
---
 drivers/net/ethernet/sun/cassini.c|  7 ---
 drivers/net/ethernet/sun/ldmvsw.c |  3 +--
 drivers/net/ethernet/sun/niu.c| 10 --
 drivers/net/ethernet/sun/sunbmac.c| 10 --
 drivers/net/ethernet/sun/sungem.c |  6 +++---
 drivers/net/ethernet/sun/sunhme.c | 10 --
 drivers/net/ethernet/sun/sunvnet.c|  3 +--
 drivers/net/ethernet/sun/sunvnet_common.c |  4 ++--
 drivers/net/ethernet/sun/sunvnet_common.h |  2 +-
 9 files changed, 24 insertions(+), 31 deletions(-)

diff --git a/drivers/net/ethernet/sun/cassini.c 
b/drivers/net/ethernet/sun/cassini.c
index a74d78f64af9..113bd57e2ea0 100644
--- a/drivers/net/ethernet/sun/cassini.c
+++ b/drivers/net/ethernet/sun/cassini.c
@@ -4079,9 +4079,9 @@ static void cas_reset_task(struct work_struct *work)
 #endif
 }
 
-static void cas_link_timer(unsigned long data)
+static void cas_link_timer(struct timer_list *t)
 {
-   struct cas *cp = (struct cas *) data;
+   struct cas *cp = from_timer(cp, t, link_timer);
int mask, pending = 0, reset = 0;
unsigned long flags;
 
@@ -5039,7 +5039,8 @@ static int cas_init_one(struct pci_dev *pdev, const 
struct pci_device_id *ent)
spin_lock_init(>stat_lock[N_TX_RINGS]);
mutex_init(>pm_mutex);
 
-   setup_timer(>link_timer, cas_link_timer, (unsigned long)cp);
+   timer_setup(>link_timer, cas_link_timer, 0);
+
 #if 1
/* Just in case the implementation of atomic operations
 * change so that an explicit initialization is necessary.
diff --git a/drivers/net/ethernet/sun/ldmvsw.c 
b/drivers/net/ethernet/sun/ldmvsw.c
index 5feeaa9f0a9e..5ea037672e6f 100644
--- a/drivers/net/ethernet/sun/ldmvsw.c
+++ b/drivers/net/ethernet/sun/ldmvsw.c
@@ -363,8 +363,7 @@ static int vsw_port_probe(struct vio_dev *vdev, const 
struct vio_device_id *id)
list_add_rcu(>list, >port_list);
spin_unlock_irqrestore(>lock, flags);
 
-   setup_timer(>clean_timer, sunvnet_clean_timer_expire_common,
-   (unsigned long)port);
+   timer_setup(>clean_timer, sunvnet_clean_timer_expire_common, 0);
 
err = register_netdev(dev);
if (err) {
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index bde19b307d0d..ab502ee35fb2 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -2221,9 +2221,9 @@ static int niu_link_status(struct niu *np, int *link_up_p)
return err;
 }
 
-static void niu_timer(unsigned long __opaque)
+static void niu_timer(struct timer_list *t)
 {
-   struct niu *np = (struct niu *) __opaque;
+   struct niu *np = from_timer(np, t, timer);
unsigned long off;
int err, link_up;
 
@@ -6123,7 +6123,7 @@ static int niu_open(struct net_device *dev)
 
err = niu_init_hw(np);
if (!err) {
-   setup_timer(>timer, niu_timer, (unsigned long)np);
+   timer_setup(>timer, niu_timer, 0);
np->timer.expires = jiffies + HZ;
 
err = niu_enable_interrupts(np, 1);
@@ -6773,10 +6773,8 @@ static int niu_change_mtu(struct net_device *dev, int 
new_mtu)
 
err = niu_init_hw(np);
if (!err) {
-   init_timer(>timer);
+   timer_setup(>timer, niu_timer, 0);
np->timer.expires = jiffies + HZ;
-   np->timer.data = (unsigned long) np;
-   np->timer.function = niu_timer;
 
err = niu_enable_interrupts(np, 1);
if (err)
diff --git a/drivers/net/ethernet/sun/sunbmac.c 
b/drivers/net/ethernet/sun/sunbmac.c
index 3189722110c2..0b1f41f6bceb 100644
--- a/drivers/net/ethernet/sun/sunbmac.c
+++ b/drivers/net/ethernet/sun/sunbmac.c
@@ -523,9 +523,9 @@ static int try_next_permutation(struct bigmac *bp, void 
__iomem *tregs)
return -1;
 }
 
-static void bigmac_timer(unsigned long data)
+static void bigmac_timer(struct timer_list *t)
 {
-   struct bigmac *bp = (struct bigmac *) data;
+   struct bigmac *bp = from_timer(bp, t, bigmac_timer);
void __iomem *tregs = bp->tregs;
int restart_timer = 0;
 
@@ -613,8 +613,6 @@ static void bigmac_begin_auto_negotiation(struct bigmac *bp)
bp->timer_state = ltrywait;
bp->timer_ticks = 0;
bp->bigmac_timer.expires = jiffies + (12 * HZ) / 10;
-   bp->bigmac_timer.data = 

[PATCH 44/58] net: ethernet: sun: Convert timers to use timer_setup()

2017-10-16 Thread Kees Cook
In preparation for unconditionally passing the struct timer_list pointer to
all timer callbacks, switch to using the new timer_setup() and from_timer()
to pass the timer pointer explicitly.

Cc: "David S. Miller" 
Cc: Philippe Reynes 
Cc: Jarod Wilson 
Cc: Shannon Nelson 
Cc: Rob Herring 
Cc: chris hyser 
Cc: Tushar Dave 
Cc: Tobias Klauser 
Cc: net...@vger.kernel.org
Signed-off-by: Kees Cook 
---
 drivers/net/ethernet/sun/cassini.c|  7 ---
 drivers/net/ethernet/sun/ldmvsw.c |  3 +--
 drivers/net/ethernet/sun/niu.c| 10 --
 drivers/net/ethernet/sun/sunbmac.c| 10 --
 drivers/net/ethernet/sun/sungem.c |  6 +++---
 drivers/net/ethernet/sun/sunhme.c | 10 --
 drivers/net/ethernet/sun/sunvnet.c|  3 +--
 drivers/net/ethernet/sun/sunvnet_common.c |  4 ++--
 drivers/net/ethernet/sun/sunvnet_common.h |  2 +-
 9 files changed, 24 insertions(+), 31 deletions(-)

diff --git a/drivers/net/ethernet/sun/cassini.c 
b/drivers/net/ethernet/sun/cassini.c
index a74d78f64af9..113bd57e2ea0 100644
--- a/drivers/net/ethernet/sun/cassini.c
+++ b/drivers/net/ethernet/sun/cassini.c
@@ -4079,9 +4079,9 @@ static void cas_reset_task(struct work_struct *work)
 #endif
 }
 
-static void cas_link_timer(unsigned long data)
+static void cas_link_timer(struct timer_list *t)
 {
-   struct cas *cp = (struct cas *) data;
+   struct cas *cp = from_timer(cp, t, link_timer);
int mask, pending = 0, reset = 0;
unsigned long flags;
 
@@ -5039,7 +5039,8 @@ static int cas_init_one(struct pci_dev *pdev, const 
struct pci_device_id *ent)
spin_lock_init(>stat_lock[N_TX_RINGS]);
mutex_init(>pm_mutex);
 
-   setup_timer(>link_timer, cas_link_timer, (unsigned long)cp);
+   timer_setup(>link_timer, cas_link_timer, 0);
+
 #if 1
/* Just in case the implementation of atomic operations
 * change so that an explicit initialization is necessary.
diff --git a/drivers/net/ethernet/sun/ldmvsw.c 
b/drivers/net/ethernet/sun/ldmvsw.c
index 5feeaa9f0a9e..5ea037672e6f 100644
--- a/drivers/net/ethernet/sun/ldmvsw.c
+++ b/drivers/net/ethernet/sun/ldmvsw.c
@@ -363,8 +363,7 @@ static int vsw_port_probe(struct vio_dev *vdev, const 
struct vio_device_id *id)
list_add_rcu(>list, >port_list);
spin_unlock_irqrestore(>lock, flags);
 
-   setup_timer(>clean_timer, sunvnet_clean_timer_expire_common,
-   (unsigned long)port);
+   timer_setup(>clean_timer, sunvnet_clean_timer_expire_common, 0);
 
err = register_netdev(dev);
if (err) {
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index bde19b307d0d..ab502ee35fb2 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -2221,9 +2221,9 @@ static int niu_link_status(struct niu *np, int *link_up_p)
return err;
 }
 
-static void niu_timer(unsigned long __opaque)
+static void niu_timer(struct timer_list *t)
 {
-   struct niu *np = (struct niu *) __opaque;
+   struct niu *np = from_timer(np, t, timer);
unsigned long off;
int err, link_up;
 
@@ -6123,7 +6123,7 @@ static int niu_open(struct net_device *dev)
 
err = niu_init_hw(np);
if (!err) {
-   setup_timer(>timer, niu_timer, (unsigned long)np);
+   timer_setup(>timer, niu_timer, 0);
np->timer.expires = jiffies + HZ;
 
err = niu_enable_interrupts(np, 1);
@@ -6773,10 +6773,8 @@ static int niu_change_mtu(struct net_device *dev, int 
new_mtu)
 
err = niu_init_hw(np);
if (!err) {
-   init_timer(>timer);
+   timer_setup(>timer, niu_timer, 0);
np->timer.expires = jiffies + HZ;
-   np->timer.data = (unsigned long) np;
-   np->timer.function = niu_timer;
 
err = niu_enable_interrupts(np, 1);
if (err)
diff --git a/drivers/net/ethernet/sun/sunbmac.c 
b/drivers/net/ethernet/sun/sunbmac.c
index 3189722110c2..0b1f41f6bceb 100644
--- a/drivers/net/ethernet/sun/sunbmac.c
+++ b/drivers/net/ethernet/sun/sunbmac.c
@@ -523,9 +523,9 @@ static int try_next_permutation(struct bigmac *bp, void 
__iomem *tregs)
return -1;
 }
 
-static void bigmac_timer(unsigned long data)
+static void bigmac_timer(struct timer_list *t)
 {
-   struct bigmac *bp = (struct bigmac *) data;
+   struct bigmac *bp = from_timer(bp, t, bigmac_timer);
void __iomem *tregs = bp->tregs;
int restart_timer = 0;
 
@@ -613,8 +613,6 @@ static void bigmac_begin_auto_negotiation(struct bigmac *bp)
bp->timer_state = ltrywait;
bp->timer_ticks = 0;
bp->bigmac_timer.expires = jiffies + (12 * HZ) / 10;
-   bp->bigmac_timer.data = (unsigned long) bp;
-   bp->bigmac_timer.function = bigmac_timer;
add_timer(>bigmac_timer);
 }
 
@@ -921,7 +919,7 @@ static int bigmac_open(struct net_device *dev)