From patchwork Wed May 31 20:53:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Justin Chen X-Patchwork-Id: 101586 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp3188056vqr; Wed, 31 May 2023 14:29:31 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4vZf0wDpzQP9R/VHKYnpZCvQho/N9Le3Sax8tp+l8w7o23lcgmNy0AA9NiYuxeIqjiTopp X-Received: by 2002:a17:902:c40e:b0:1b0:3c1a:1238 with SMTP id k14-20020a170902c40e00b001b03c1a1238mr7870299plk.59.1685568570702; Wed, 31 May 2023 14:29:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685568570; cv=none; d=google.com; s=arc-20160816; b=sCX+GS4Rq4i+xS2xhdUOoqr9nXUoJPdpVe/FgJMuHkAf6xF/N962oIhPaByNImUjM4 8yAGzqQQsKj9SCzU3g8LmhuMtU7QBM83NDdjLeThDcX4/9CMSQXKVpZ6j6ZObq4wQAf8 jnnXNjE+OR1xsE+MuK2KwlLxlsmYzQjMjuWFOjYqZVzPGwhxrMtEz+3VjffBEgBMGEdy yfLbRSIpdJvcTAd8NKpxxbJDQXzrsZTqhtalB+P4+LQ8MuQv8n8juETaQXN2fbytDR3+ LmVdfCF+M3YB8A6Fwh+NJ4cY9dfWcALYj7zf87Cfqyj8LFtSiPgQ14476xkEdE34xDRi j3yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=S/tIbjMOzrV0tes0SpPx2z1WCchqgtLOTCZJxfWjgkI=; b=k2hA+jimrZb25g7C6Zr4OxeOHtcqyPOUAEuM8HCvl0a3/c+MsrFfdkw+snevCVNFrZ A1xN3/Z6R694Uq7T7ay/xforYCIhKD8efFst4pkH/VyDQKiMvd5brpD48/nshQFHKVT6 eqyfvbiIp1Idm6y4WPUt7pL2+n9aibJ/pkLOGONhXJD5vpjqELF0Q/3iYe1fYdjsY4z7 tNyKN9/luTh7mDrKzVmAIZPz6hD5tMzcALx46Z4JUHr3/eD9M6UCMlwC7aR4ISuT6kpw pkSzY+zfRqyz3IBBl68nZzTROaMUOfP8rUHecxx6FtYCHYfb6BSROCd/9i72HY+t24gm pGAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@broadcom.com header.s=google header.b=HLFIINpl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m15-20020a170902db0f00b001a1f70cc7dbsi1449041plx.562.2023.05.31.14.29.10; Wed, 31 May 2023 14:29:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@broadcom.com header.s=google header.b=HLFIINpl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229799AbjEaUyC (ORCPT + 99 others); Wed, 31 May 2023 16:54:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57322 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229476AbjEaUyA (ORCPT ); Wed, 31 May 2023 16:54:00 -0400 Received: from mail-pf1-x435.google.com (mail-pf1-x435.google.com [IPv6:2607:f8b0:4864:20::435]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04C63129 for ; Wed, 31 May 2023 13:54:00 -0700 (PDT) Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-64d5b4c400fso224660b3a.1 for ; Wed, 31 May 2023 13:53:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1685566439; x=1688158439; h=message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=S/tIbjMOzrV0tes0SpPx2z1WCchqgtLOTCZJxfWjgkI=; b=HLFIINplwvQnozoURe7fFqoDE3MPANX+abzHwYbUVEUViyUsjLpAed39ov4QamNmnI BIEsIwrhTtAwlS5OrNGhh8yIX+6uCcaGeGvusV6Wg1cftiQXl03IwM/ViNTy0PnaUaPr WECj5CBD5QvnYS0b6tk2MrVCQoXja+EEsE1cw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685566439; x=1688158439; h=message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=S/tIbjMOzrV0tes0SpPx2z1WCchqgtLOTCZJxfWjgkI=; b=cs2Aiqvh9b6bA0I4ludLkP2unwSFM0AAVu6jWpp7zcvF+f1mkq469tleHO+11Uizhb mYc8ZVhIWuVK1miwrQMK+CBfo04C10jPkKSiqPNqN9RMUbqwM01DsCc0zlKqzM1+D1yV rrPjBaFpFJv88UbOvL4BM+XfdQu8bjKhbdskaaFq2NwtWWLfTj7jeDjqUePkYW/f3RuW vXJkyzDplV69qba7mW0Mj23ez+rYKMVgWshO8RJxNs5MFHmYtvVOfea8CLmBoYn4lLGM jtDgbbzW72uVk8ANkW+jvGGhK8BjGaxoLpHjGJsGijRq81Rk1SR1P6o6nDBVPKIYXg9D y2cA== X-Gm-Message-State: AC+VfDz0jOMzKwuqEYWYfZ1qScq6qurXEPlb/BngdBdxr+3P9M7EdUcd ZISbm4HmFXpKhkO+trtYOvRENMFGIzjwFe5JaCU= X-Received: by 2002:a05:6a20:5494:b0:10c:8f0c:f81c with SMTP id i20-20020a056a20549400b0010c8f0cf81cmr8751822pzk.53.1685566439336; Wed, 31 May 2023 13:53:59 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id j8-20020a62e908000000b0064f97ff4506sm3155556pfh.68.2023.05.31.13.53.55 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 31 May 2023 13:53:56 -0700 (PDT) From: Justin Chen To: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: bcm-kernel-feedback-list@broadcom.com, florian.fainelli@broadcom.com, Justin Chen Subject: [PATCH net-next] ethtool: ioctl: improve error checking for set_wol Date: Wed, 31 May 2023 13:53:49 -0700 Message-Id: <1685566429-2869-1-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 X-Spam-Status: No, score=-0.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, MIME_HEADER_CTYPE_ONLY,MIME_NO_TEXT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE, SPF_NONE,T_SCC_BODY_TEXT_LINE,T_TVD_MIME_NO_HEADERS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767446749750417386?= X-GMAIL-MSGID: =?utf-8?q?1767446749750417386?= The netlink version of set_wol checks for not supported wolopts and avoids setting wol when the correct wolopt is already set. If we do the same with the ioctl version then we can remove these checks from the driver layer. Signed-off-by: Justin Chen Reviewed-by: Simon Horman --- net/ethtool/ioctl.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index 6bb778e10461..80f456f83db0 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c @@ -1436,15 +1436,25 @@ static int ethtool_get_wol(struct net_device *dev, char __user *useraddr) static int ethtool_set_wol(struct net_device *dev, char __user *useraddr) { - struct ethtool_wolinfo wol; + struct ethtool_wolinfo wol, cur_wol; int ret; - if (!dev->ethtool_ops->set_wol) + if (!dev->ethtool_ops->get_wol || !dev->ethtool_ops->set_wol) return -EOPNOTSUPP; + memset(&cur_wol, 0, sizeof(struct ethtool_wolinfo)); + cur_wol.cmd = ETHTOOL_GWOL; + dev->ethtool_ops->get_wol(dev, &cur_wol); + if (copy_from_user(&wol, useraddr, sizeof(wol))) return -EFAULT; + if (wol.wolopts & ~cur_wol.supported) + return -EOPNOTSUPP; + + if (wol.wolopts == cur_wol.wolopts) + return 0; + ret = dev->ethtool_ops->set_wol(dev, &wol); if (ret) return ret;