mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Kees Cook <keescook@chromium.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Kees Cook <keescook@chromium.org>,
	Hannes Reinecke <hare@suse.com>,
	"James E.J. Bottomley" <jejb@linux.vnet.ibm.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v2 18/31] scsi/aic7xxx: Clean up timer usage
Date: Wed, 20 Sep 2017 16:27:42 -0700	[thread overview]
Message-ID: <1505950075-50223-19-git-send-email-keescook@chromium.org> (raw)
In-Reply-To: <1505950075-50223-1-git-send-email-keescook@chromium.org>

stat_timer only ever assigns the same function and data, so consolidate to
a setup_timer() call and drop everything else used to pass things around.

reset_timer is unused; remove it.

Cc: Hannes Reinecke <hare@suse.com>
Cc: "James E.J. Bottomley" <jejb@linux.vnet.ibm.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: linux-scsi@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
---
 drivers/scsi/aic7xxx/aic79xx.h      |  5 +----
 drivers/scsi/aic7xxx/aic79xx_core.c | 29 ++++++++---------------------
 2 files changed, 9 insertions(+), 25 deletions(-)

diff --git a/drivers/scsi/aic7xxx/aic79xx.h b/drivers/scsi/aic7xxx/aic79xx.h
index d47b527b25dd..31f2bb9d7146 100644
--- a/drivers/scsi/aic7xxx/aic79xx.h
+++ b/drivers/scsi/aic7xxx/aic79xx.h
@@ -1046,8 +1046,6 @@ typedef enum {
 
 typedef uint8_t ahd_mode_state;
 
-typedef void ahd_callback_t (void *);
-
 struct ahd_completion
 {
 	uint16_t	tag;
@@ -1122,8 +1120,7 @@ struct ahd_softc {
 	/*
 	 * Timer handles for timer driven callbacks.
 	 */
-	ahd_timer_t		  reset_timer;
-	ahd_timer_t		  stat_timer;
+	struct timer_list	stat_timer;
 
 	/*
 	 * Statistics.
diff --git a/drivers/scsi/aic7xxx/aic79xx_core.c b/drivers/scsi/aic7xxx/aic79xx_core.c
index 95d8f25cbcca..a9fcc40eabcc 100644
--- a/drivers/scsi/aic7xxx/aic79xx_core.c
+++ b/drivers/scsi/aic7xxx/aic79xx_core.c
@@ -207,7 +207,7 @@ static void		ahd_add_scb_to_free_list(struct ahd_softc *ahd,
 static u_int		ahd_rem_wscb(struct ahd_softc *ahd, u_int scbid,
 				     u_int prev, u_int next, u_int tid);
 static void		ahd_reset_current_bus(struct ahd_softc *ahd);
-static ahd_callback_t	ahd_stat_timer;
+static void		ahd_stat_timer(unsigned long data);
 #ifdef AHD_DUMP_SEQ
 static void		ahd_dumpseq(struct ahd_softc *ahd);
 #endif
@@ -6104,8 +6104,7 @@ ahd_alloc(void *platform_arg, char *name)
 	ahd->bugs = AHD_BUGNONE;
 	ahd->flags = AHD_SPCHK_ENB_A|AHD_RESET_BUS_A|AHD_TERM_ENB_A
 		   | AHD_EXTENDED_TRANS_A|AHD_STPWLEVEL_A;
-	ahd_timer_init(&ahd->reset_timer);
-	ahd_timer_init(&ahd->stat_timer);
+	setup_timer(&ahd->stat_timer, ahd_stat_timer, (unsigned long)ahd);
 	ahd->int_coalescing_timer = AHD_INT_COALESCING_TIMER_DEFAULT;
 	ahd->int_coalescing_maxcmds = AHD_INT_COALESCING_MAXCMDS_DEFAULT;
 	ahd->int_coalescing_mincmds = AHD_INT_COALESCING_MINCMDS_DEFAULT;
@@ -6235,8 +6234,7 @@ ahd_shutdown(void *arg)
 	/*
 	 * Stop periodic timer callbacks.
 	 */
-	ahd_timer_stop(&ahd->reset_timer);
-	ahd_timer_stop(&ahd->stat_timer);
+	del_timer_sync(&ahd->stat_timer);
 
 	/* This will reset most registers to 0, but not all */
 	ahd_reset(ahd, /*reinit*/FALSE);
@@ -7039,20 +7037,11 @@ static const char *termstat_strings[] = {
 };
 
 /***************************** Timer Facilities *******************************/
-#define ahd_timer_init init_timer
-#define ahd_timer_stop del_timer_sync
-typedef void ahd_linux_callback_t (u_long);
-
 static void
-ahd_timer_reset(ahd_timer_t *timer, int usec, ahd_callback_t *func, void *arg)
+ahd_timer_reset(ahd_timer_t *timer, int usec)
 {
-	struct ahd_softc *ahd;
-
-	ahd = (struct ahd_softc *)arg;
 	del_timer(timer);
-	timer->data = (u_long)arg;
 	timer->expires = jiffies + (usec * HZ)/1000000;
-	timer->function = (ahd_linux_callback_t*)func;
 	add_timer(timer);
 }
 
@@ -7279,8 +7268,7 @@ ahd_init(struct ahd_softc *ahd)
 	}
 init_done:
 	ahd_restart(ahd);
-	ahd_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US,
-			ahd_stat_timer, ahd);
+	ahd_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US);
 	return (0);
 }
 
@@ -8878,9 +8866,9 @@ ahd_reset_channel(struct ahd_softc *ahd, char channel, int initiate_reset)
 
 /**************************** Statistics Processing ***************************/
 static void
-ahd_stat_timer(void *arg)
+ahd_stat_timer(unsigned long data)
 {
-	struct	ahd_softc *ahd = arg;
+	struct	ahd_softc *ahd = (struct ahd_softc *)data;
 	u_long	s;
 	int	enint_coal;
 	
@@ -8907,8 +8895,7 @@ ahd_stat_timer(void *arg)
 	ahd->cmdcmplt_bucket = (ahd->cmdcmplt_bucket+1) & (AHD_STAT_BUCKETS-1);
 	ahd->cmdcmplt_total -= ahd->cmdcmplt_counts[ahd->cmdcmplt_bucket];
 	ahd->cmdcmplt_counts[ahd->cmdcmplt_bucket] = 0;
-	ahd_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US,
-			ahd_stat_timer, ahd);
+	ahd_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US);
 	ahd_unlock(ahd, &s);
 }
 
-- 
2.7.4

  parent reply	other threads:[~2017-09-20 23:40 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-20 23:27 [PATCH v2 00/31] struct timer_list callback argument conversion, step 1 Kees Cook
2017-09-20 23:27 ` [PATCH v2 01/31] coccinelle: Improve setup_timer.cocci matching Kees Cook
2017-09-23 20:43   ` Julia Lawall
2017-11-07  0:18     ` Masahiro Yamada
2017-09-20 23:27 ` [PATCH v2 02/31] timer: Convert open-coded init_timer() to setup_timer() Kees Cook
2017-09-20 23:27 ` [PATCH v2 03/31] timer: Remove init_timer_pinned_deferrable() in favor of setup_pinned_deferrable_timer() Kees Cook
2017-09-26 11:12   ` Gautham R Shenoy
2017-09-20 23:27 ` [PATCH v2 04/31] timer: Remove init_timer_on_stack() in favor of setup_timer_on_stack() Kees Cook
2017-09-20 23:27 ` [PATCH v2 05/31] timer: Remove init_timer_pinned() in favor of setup_pinned_timer() Kees Cook
2017-09-20 23:27 ` [PATCH v2 06/31] timer: Remove init_timer_deferrable() in favor of setup_deferrable_timer() Kees Cook
2017-09-20 23:27 ` [PATCH v2 07/31] timer: Remove users of TIMER_DEFERRED_INITIALIZER Kees Cook
2017-09-20 23:27 ` [PATCH v2 08/31] timer: Remove users of TIMER_INITIALIZER Kees Cook
2017-09-20 23:27 ` [PATCH v2 09/31] timer: Remove unused static initializer macros Kees Cook
2017-09-20 23:27 ` [PATCH v2 10/31] timer: Remove users of expire and data arguments to DEFINE_TIMER Kees Cook
2017-09-20 23:27 ` [PATCH v2 11/31] timer: Remove expires and data arguments from DEFINE_TIMER Kees Cook
2017-09-20 23:27 ` [PATCH v2 12/31] timer: Remove expires argument from __TIMER_INITIALIZER() Kees Cook
2017-09-20 23:27 ` [PATCH v2 13/31] timer: Remove meaningless .data/.function assignments Kees Cook
2017-09-20 23:27 ` [PATCH v2 14/31] timer: Collapse cross-function single-assignment .data into setup_timer() Kees Cook
2017-09-20 23:27 ` [PATCH v2 15/31] timer: Additional init_timer() -> setup_timer() conversions Kees Cook
2017-09-20 23:27 ` [PATCH v2 16/31] usb/phy-isp1301-omap: Remove .data assignment Kees Cook
2017-09-28  9:36   ` Felipe Balbi
2017-09-20 23:27 ` [PATCH v2 17/31] media/i2c/tc358743: Initialize timer Kees Cook
2017-09-20 23:27 ` Kees Cook [this message]
2017-09-21  7:35   ` [PATCH v2 18/31] scsi/aic7xxx: Clean up timer usage Hannes Reinecke
2017-09-20 23:27 ` [PATCH v2 19/31] timer: Remove open-coded casts for .data and .function Kees Cook
2017-09-20 23:27 ` [PATCH v2 20/31] net/core: Collapse redundant sk_timer callback data assignments Kees Cook
2017-09-20 23:27 ` [PATCH v2 21/31] s390/char/sclp: Use separate static data field with with static timer Kees Cook
2017-09-20 23:27 ` [PATCH v2 22/31] sparc/led: " Kees Cook
2017-09-20 23:27 ` [PATCH v2 23/31] mips/sgi-ip32: " Kees Cook
2017-09-20 23:27 ` [PATCH v2 24/31] mips/sgi-ip22: " Kees Cook
2017-09-20 23:27 ` [PATCH v2 25/31] net/atm/mpc: " Kees Cook
2017-09-20 23:27 ` [PATCH v2 26/31] staging/comedi/das16: Make timer initialization unconditional Kees Cook
2017-09-21 10:33   ` Ian Abbott
2017-09-20 23:27 ` [PATCH v2 27/31] usb/gadget/snps_udc_core: Remove struct timer_list.data use Kees Cook
2017-09-21 14:06   ` Michal Nazarewicz
2017-09-28  9:36   ` Felipe Balbi
2017-09-20 23:27 ` [PATCH v2 28/31] infiniband/rdmavt: Remove redundant timer initialization Kees Cook
2017-09-20 23:27 ` [PATCH v2 29/31] scsi/bnx2i: Initialize timer Kees Cook
2017-09-20 23:27 ` [PATCH v2 30/31] appletalk: Remove unneeded synchronization Kees Cook
2017-09-20 23:27 ` [PATCH v2 31/31] timer: Switch to testing for .function instead of .data Kees Cook

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1505950075-50223-19-git-send-email-keescook@chromium.org \
    --to=keescook@chromium.org \
    --cc=hare@suse.com \
    --cc=jejb@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®