From patchwork Tue Oct 17 00:28:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kees Cook X-Patchwork-Id: 10010421 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 826E0600CC for ; Tue, 17 Oct 2017 00:36:05 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 72850286D7 for ; Tue, 17 Oct 2017 00:36:05 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6531828718; Tue, 17 Oct 2017 00:36:05 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B136B286D7 for ; Tue, 17 Oct 2017 00:36:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933211AbdJQAaG (ORCPT ); Mon, 16 Oct 2017 20:30:06 -0400 Received: from mail-pg0-f44.google.com ([74.125.83.44]:53286 "EHLO mail-pg0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933193AbdJQAaC (ORCPT ); Mon, 16 Oct 2017 20:30:02 -0400 Received: by mail-pg0-f44.google.com with SMTP id s2so37055pge.10 for ; Mon, 16 Oct 2017 17:30:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=WH+q907I/HJ2+jggyvgjOKj8uAgWg1Xz1/OMjlKxDBg=; b=FXB0Ws6FWKY5LTtxkjvGc/eW9jB1hRFtZp5Isqejzd+Bj2nXfqPcrdGqptVsLrK5d5 2F5preLJbSaZEC4D0fQ1+IY9mpLkUPcNuQZ95qxuJ9LSc2K2jinMA3QwHIzKsyt60/C9 Ej4El3ngRiNb0qVH34U6X9G+yj31SvQPMBAlw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=WH+q907I/HJ2+jggyvgjOKj8uAgWg1Xz1/OMjlKxDBg=; b=HhAUHYXnk36s4SIwrFoqVEXH6bCGT8QBHP/iHGPgQw3f3ufsGLwGhnAqj8Tb0oge9j E4SOfsKGRSG0tvp/mNLfbhemlf/jVqzbiA0EscA19U7zI6gBhz3rAqXtR9enKsY6Gv+o GLU8OrISt999v39wGEk/wVg69KiP9Gtf+kt3xXetvi4InNHwwwyNUKaMV3/h05HrFQMb MuTsEBXtDVhG8uVBzL+KKzb3ur8BJgHJqoqId12Yp7LS4OMcKBgFeZezbgwEfBYxoLV4 ybYB4EihCIzakK81OHX5QyLKTaLE6emKv8ebR6s+4hN8ZlJV2CjrDrbWusKQzj83u2j6 GS4g== X-Gm-Message-State: AMCzsaX2SrD1+1AnR/Fe8GsHjQbMGP3S7jUdJDfCmCK82dJNqLxm4dZH B8YRfJD/rKPEDRkFSFGjxZTYtg== X-Google-Smtp-Source: AOwi7QABSs6Uv1v/5a1w8RoX4ACQXrtNQk4R70dkvOEWhrvVTk0qAFMzIe6Hp/RSOUzrZyiiCQ3sOA== X-Received: by 10.159.214.139 with SMTP id n11mr9946379plp.289.1508200201407; Mon, 16 Oct 2017 17:30:01 -0700 (PDT) Received: from www.outflux.net (173-164-112-133-Oregon.hfc.comcastbusiness.net. [173.164.112.133]) by smtp.gmail.com with ESMTPSA id b1sm13551820pgc.67.2017.10.16.17.29.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 16 Oct 2017 17:29:57 -0700 (PDT) From: Kees Cook To: "David S. Miller" Cc: Kees Cook , Kalle Valo , linux-wireless@vger.kernel.org, netdev@vger.kernel.org, Thomas Gleixner , linux-kernel@vger.kernel.org Subject: [PATCH 08/58] net/wireless/ray_cs: Convert timers to use timer_setup() Date: Mon, 16 Oct 2017 17:28:52 -0700 Message-Id: <1508200182-104605-9-git-send-email-keescook@chromium.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1508200182-104605-1-git-send-email-keescook@chromium.org> References: <1508200182-104605-1-git-send-email-keescook@chromium.org> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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: Kalle Valo Cc: linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org Signed-off-by: Kees Cook --- drivers/net/wireless/ray_cs.c | 53 ++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c index 170cd504e8ff..d8afcdfca1ed 100644 --- a/drivers/net/wireless/ray_cs.c +++ b/drivers/net/wireless/ray_cs.c @@ -92,7 +92,7 @@ static const struct iw_handler_def ray_handler_def; /***** Prototypes for raylink functions **************************************/ static void authenticate(ray_dev_t *local); static int build_auth_frame(ray_dev_t *local, UCHAR *dest, int auth_type); -static void authenticate_timeout(u_long); +static void authenticate_timeout(struct timer_list *t); static int get_free_ccs(ray_dev_t *local); static int get_free_tx_ccs(ray_dev_t *local); static void init_startup_params(ray_dev_t *local); @@ -102,7 +102,7 @@ static int ray_init(struct net_device *dev); static int interrupt_ecf(ray_dev_t *local, int ccs); static void ray_reset(struct net_device *dev); static void ray_update_parm(struct net_device *dev, UCHAR objid, UCHAR *value, int len); -static void verify_dl_startup(u_long); +static void verify_dl_startup(struct timer_list *t); /* Prototypes for interrpt time functions **********************************/ static irqreturn_t ray_interrupt(int reg, void *dev_id); @@ -120,9 +120,8 @@ static void associate(ray_dev_t *local); /* Card command functions */ static int dl_startup_params(struct net_device *dev); -static void join_net(u_long local); -static void start_net(u_long local); -/* void start_net(ray_dev_t *local); */ +static void join_net(struct timer_list *t); +static void start_net(struct timer_list *t); /*===========================================================================*/ /* Parameters that can be set with 'insmod' */ @@ -323,7 +322,7 @@ static int ray_probe(struct pcmcia_device *p_dev) dev_dbg(&p_dev->dev, "ray_cs ray_attach calling ether_setup.)\n"); netif_stop_queue(dev); - init_timer(&local->timer); + timer_setup(&local->timer, NULL, 0); this_device = p_dev; return ray_config(p_dev); @@ -570,8 +569,7 @@ static int dl_startup_params(struct net_device *dev) local->card_status = CARD_DL_PARAM; /* Start kernel timer to wait for dl startup to complete. */ local->timer.expires = jiffies + HZ / 2; - local->timer.data = (long)local; - local->timer.function = verify_dl_startup; + local->timer.function = (TIMER_FUNC_TYPE)verify_dl_startup; add_timer(&local->timer); dev_dbg(&link->dev, "ray_cs dl_startup_params started timer for verify_dl_startup\n"); @@ -641,9 +639,9 @@ static void init_startup_params(ray_dev_t *local) } /* init_startup_params */ /*===========================================================================*/ -static void verify_dl_startup(u_long data) +static void verify_dl_startup(struct timer_list *t) { - ray_dev_t *local = (ray_dev_t *) data; + ray_dev_t *local = from_timer(local, t, timer); struct ccs __iomem *pccs = ccs_base(local) + local->dl_param_ccs; UCHAR status; struct pcmcia_device *link = local->finder; @@ -676,16 +674,16 @@ static void verify_dl_startup(u_long data) return; } if (local->sparm.b4.a_network_type == ADHOC) - start_net((u_long) local); + start_net(&local->timer); else - join_net((u_long) local); + join_net(&local->timer); } /* end verify_dl_startup */ /*===========================================================================*/ /* Command card to start a network */ -static void start_net(u_long data) +static void start_net(struct timer_list *t) { - ray_dev_t *local = (ray_dev_t *) data; + ray_dev_t *local = from_timer(local, t, timer); struct ccs __iomem *pccs; int ccsindex; struct pcmcia_device *link = local->finder; @@ -710,9 +708,9 @@ static void start_net(u_long data) /*===========================================================================*/ /* Command card to join a network */ -static void join_net(u_long data) +static void join_net(struct timer_list *t) { - ray_dev_t *local = (ray_dev_t *) data; + ray_dev_t *local = from_timer(local, t, timer); struct ccs __iomem *pccs; int ccsindex; @@ -1639,13 +1637,13 @@ static int get_free_ccs(ray_dev_t *local) } /* get_free_ccs */ /*===========================================================================*/ -static void authenticate_timeout(u_long data) +static void authenticate_timeout(struct timer_list *t) { - ray_dev_t *local = (ray_dev_t *) data; + ray_dev_t *local = from_timer(local, t, timer); del_timer(&local->timer); printk(KERN_INFO "ray_cs Authentication with access point failed" " - timeout\n"); - join_net((u_long) local); + join_net(&local->timer); } /*===========================================================================*/ @@ -1945,17 +1943,16 @@ static irqreturn_t ray_interrupt(int irq, void *dev_id) del_timer(&local->timer); local->timer.expires = jiffies + HZ * 5; - local->timer.data = (long)local; if (status == CCS_START_NETWORK) { dev_dbg(&link->dev, "ray_cs interrupt network \"%s\" start failed\n", memtmp); - local->timer.function = start_net; + local->timer.function = (TIMER_FUNC_TYPE)start_net; } else { dev_dbg(&link->dev, "ray_cs interrupt network \"%s\" join failed\n", memtmp); - local->timer.function = join_net; + local->timer.function = (TIMER_FUNC_TYPE)join_net; } add_timer(&local->timer); } @@ -1967,7 +1964,7 @@ static irqreturn_t ray_interrupt(int irq, void *dev_id) } else { dev_dbg(&link->dev, "ray_cs association failed,\n"); local->card_status = CARD_ASSOC_FAILED; - join_net((u_long) local); + join_net(&local->timer); } break; case CCS_TX_REQUEST: @@ -2420,12 +2417,11 @@ static void authenticate(ray_dev_t *local) del_timer(&local->timer); if (build_auth_frame(local, local->bss_id, OPEN_AUTH_REQUEST)) { - local->timer.function = join_net; + local->timer.function = (TIMER_FUNC_TYPE)join_net; } else { - local->timer.function = authenticate_timeout; + local->timer.function = (TIMER_FUNC_TYPE)authenticate_timeout; } local->timer.expires = jiffies + HZ * 2; - local->timer.data = (long)local; add_timer(&local->timer); local->authentication_state = AWAITING_RESPONSE; } /* end authenticate */ @@ -2468,7 +2464,7 @@ static void rx_authenticate(ray_dev_t *local, struct rcs __iomem *prcs, } else { pr_debug("Authentication refused\n"); local->card_status = CARD_AUTH_REFUSED; - join_net((u_long) local); + join_net(&local->timer); local->authentication_state = UNAUTHENTICATED; } @@ -2506,8 +2502,7 @@ static void associate(ray_dev_t *local) del_timer(&local->timer); local->timer.expires = jiffies + HZ * 2; - local->timer.data = (long)local; - local->timer.function = join_net; + local->timer.function = (TIMER_FUNC_TYPE)join_net; add_timer(&local->timer); local->card_status = CARD_ASSOC_FAILED; return;