From patchwork Thu Aug 9 12:33:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Whitten X-Patchwork-Id: 955524 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="bwJu5qKv"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41mSPR49fBz9ryt for ; Thu, 9 Aug 2018 22:34:35 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730699AbeHIO7O (ORCPT ); Thu, 9 Aug 2018 10:59:14 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:52734 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727786AbeHIO7O (ORCPT ); Thu, 9 Aug 2018 10:59:14 -0400 Received: by mail-wm0-f66.google.com with SMTP id o11-v6so35447wmh.2 for ; Thu, 09 Aug 2018 05:34:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id; bh=d4trg1VikcampBqiUG7Zk05+B293YV9xzEpclqVwya0=; b=bwJu5qKv7yz062ltCbcF7jGaD0yAc3ZSuCZKlgxQTzCe7VrOlG6j+iNqim4V3Hwv1b UgJ9bBcdcXNTYgxpd1Rfj1q7DYZJPDw8ZcvPHeGNc37g6UP9RliklnZ1bIXCNPU55f2C q0CIcHKS++ZKx8zc6vXwZvBgWMW4B9niGb4FKFd7MQvafivc69rFhOVnAfi4JQF8ku0n YuSGN6dUYrTwy9Mp8NDPo8iQbQAoDyrGPINTWX/ymbn4eh+H1d7Ycwc4QMQNAnEPrfCd bZMiT+bSDhmkbjnokGafAhpqFqYOAjEkJxInlu8pBpTd9bOxgzMvYIO85aU2DhaTLBqO M0IQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=d4trg1VikcampBqiUG7Zk05+B293YV9xzEpclqVwya0=; b=MpqS0SSFYtrjQAUCApei+72SAIXG4bGJjAhhPoadjYNm1227AKjJ9gnZGfKvzCqdbw OKDwqoRRbPv8hc+X7kuFLiGw7Lnr/K3ezxml4b988IioiedcnqFV353m13wBdykFreYV s0ZTF6o594cDOA+ARpBloPtNNcVMQeLaUUokms44SvnKEA42781lzMWgeI49LnB2Vr3G 8y73+l6VLU1ZMPepbnvozRTZfxlLLgyegItLl25g3wdXOPlfg8pdAprBp1SVZwnVuzDt iTTppRuXXXsEiOpnWIr21mbK01AOXbwsXa2ysPqB3xr1Reu32/vCiN/CxKSysYnKfC3P 6b2Q== X-Gm-Message-State: AOUpUlEFCpmrHJW9d6eEi7zC+LhlTOLYuR1s5DSyeC9bJnyQx7pq8aJ7 GI33LuoI9F6ohp8sdX6O3+c= X-Google-Smtp-Source: AA+uWPyhYCfAWRWm4Bcx9fqhZRezy1ElZZXfHfFIK3CBjp99RCcVjsEZgOZPfvDAV4JIOhT4PXEKLQ== X-Received: by 2002:a1c:8b0d:: with SMTP id n13-v6mr1407557wmd.46.1533818071315; Thu, 09 Aug 2018 05:34:31 -0700 (PDT) Received: from Sarah.corp.lairdtech.com ([109.174.151.67]) by smtp.gmail.com with ESMTPSA id g125-v6sm8596848wmf.16.2018.08.09.05.34.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 09 Aug 2018 05:34:30 -0700 (PDT) From: Ben Whitten X-Google-Original-From: Ben Whitten To: afaerber@suse.de Cc: starnight@g.ncu.edu.tw, hasnain.virk@arm.com, netdev@vger.kernel.org, liuxuenetmail@gmail.com, shess@hessware.de, Ben Whitten Subject: [PATCH lora-next v2 1/8] net: lora: add methods for devm registration Date: Thu, 9 Aug 2018 13:33:31 +0100 Message-Id: <1533818018-29005-1-git-send-email-ben.whitten@lairdtech.com> X-Mailer: git-send-email 2.7.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Follow the devm model so that we can avoid lengthy unwind code. Signed-off-by: Ben Whitten --- drivers/net/lora/dev.c | 28 ++++++++++++++++++++++++++++ include/linux/lora/dev.h | 1 + 2 files changed, 29 insertions(+) diff --git a/drivers/net/lora/dev.c b/drivers/net/lora/dev.c index 8c01106..e32a870 100644 --- a/drivers/net/lora/dev.c +++ b/drivers/net/lora/dev.c @@ -84,6 +84,34 @@ void free_loradev(struct net_device *dev) } EXPORT_SYMBOL_GPL(free_loradev); +static void devm_free_loradev(struct device *dev, void *res) +{ + struct net_device *net = (*(struct net_device **)res); + free_loradev(net); +} + +struct net_device *devm_alloc_loradev(struct device *dev, size_t priv) +{ + struct net_device **ptr; + struct net_device *net; + + net = alloc_loradev(priv); + if (!net) + return NULL; + + ptr = devres_alloc(devm_free_loradev, sizeof(*ptr), GFP_KERNEL); + if (!ptr) { + free_loradev(net); + return NULL; + } + + *ptr = net; + devres_add(dev, ptr); + + return net; +} +EXPORT_SYMBOL_GPL(devm_alloc_loradev); + static struct rtnl_link_ops lora_link_ops __read_mostly = { .kind = "lora", .setup = lora_setup, diff --git a/include/linux/lora/dev.h b/include/linux/lora/dev.h index 153f9b2..0f600c9 100644 --- a/include/linux/lora/dev.h +++ b/include/linux/lora/dev.h @@ -31,6 +31,7 @@ static inline int lora_strtoeui(const char *str, lora_eui *val) } struct net_device *alloc_loradev(int sizeof_priv); +struct net_device *devm_alloc_loradev(struct device *dev, size_t priv); void free_loradev(struct net_device *dev); int register_loradev(struct net_device *dev); void unregister_loradev(struct net_device *dev);