From patchwork Mon Jun 5 18:46:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Justin Chen X-Patchwork-Id: 103440 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2894568vqr; Mon, 5 Jun 2023 12:04:12 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6LvDPZBILUNuCkqyM71IAjpQj+fV6+IrAwz9Ka7Wf7adUynrF3ZHv2cmoM85lVe6SqRPGe X-Received: by 2002:ac8:7d95:0:b0:3f4:8612:6d84 with SMTP id c21-20020ac87d95000000b003f486126d84mr9768212qtd.60.1685991852065; Mon, 05 Jun 2023 12:04:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685991852; cv=none; d=google.com; s=arc-20160816; b=sEtFeRFSSraLWV67Ho3l2Gz3IlSql+p6v8/wegZra8ir92eHSnSuzqv18KU0vuihSm 4MLDDuQiCVOnpyEa+6cYWw4gHzy7CV+vR/IfaiHZBY0jzBjFG9FwbBfxe73AL6//ugWR 7RBDSIEVXtPFOt5B0ckbM6aOPRT2l4dW/hqB8hI6cG6/cqMBp4i+SMZT9NaUyV1lq9V9 ZrVq7V0lmlMCX5lpZDviQVCm9ZCknuT0Mw9+yFXkEe6A76bzyNgebl8FV3LQ+qzEQoBX 7mbd2BOL10UgSZGdVZef+0zVISQtnCrtZDI+AvO8oS4ELS4Vm0EMX0u4RF+LdAqe16uC oXVQ== 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=jNHAiAhVPfbVJioAY+YpKQlsn5rZfV74vqkJAUpIO2c=; b=gnF+88B9iXG1NpzsR1QPGFpgTI1VjoYFbUu9dUHotTiPVyooIY4Aglj0kWYZey7l+Y ZLUFXof4kSGSq2RcK4Jt0MHjc+X5efaBuMEGn/qwpOQdBmgDMpOcXznNLMxUk3Z95MO1 J7tffqi5fpvB3x1fvOb9RTIopr+IaXire3Q4e4rbD/DC86EOJ+VMpSW1FmTeKbSXPwKq bT+yijf78XEUClnd52V6WItzyQvUBeyxU1rRMSLp54Hwi2KCjKQ039Q7dsJPmwgS7Ygw 2PKnWxBiagmSfLHwsDXpLOO6xxKwkfRmTv6Y5U9zLqE0gtBVgNKJpmM0gWe3/0mbMbqb twNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@broadcom.com header.s=google header.b=e0mQFLXs; 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 j10-20020a05622a038a00b003f39543cea9si665020qtx.560.2023.06.05.12.03.56; Mon, 05 Jun 2023 12:04:11 -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=e0mQFLXs; 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 S233779AbjFESqz (ORCPT + 99 others); Mon, 5 Jun 2023 14:46:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54088 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235305AbjFESqq (ORCPT ); Mon, 5 Jun 2023 14:46:46 -0400 Received: from mail-il1-x134.google.com (mail-il1-x134.google.com [IPv6:2607:f8b0:4864:20::134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 67009109 for ; Mon, 5 Jun 2023 11:46:44 -0700 (PDT) Received: by mail-il1-x134.google.com with SMTP id e9e14a558f8ab-33b4b70693eso26490655ab.1 for ; Mon, 05 Jun 2023 11:46:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1685990804; x=1688582804; h=message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jNHAiAhVPfbVJioAY+YpKQlsn5rZfV74vqkJAUpIO2c=; b=e0mQFLXsIa2S1C7anlW5DdGCTgGKc3OmYGGiSm9MtfyCRmV6lg386AY/g8uD2MbKI1 MN1ITalVnprDbhyppHOUfD2gHSMoe6urkTv6W/53a+F/I72D/BymAQNe6vGfBs3VAl5Z WfQNG6D3u6d/M2L6WxJsxBDpnS1fC1O98yRzU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685990804; x=1688582804; h=message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jNHAiAhVPfbVJioAY+YpKQlsn5rZfV74vqkJAUpIO2c=; b=MRhPbDwghWqcakeyNWN7gybPjYmqhlZVw11GxhmV6D1Ls3/Fh4fPHceN5q/LzYo/aZ 0H57rRwagYyCSAg8N244EglSWkYNlLq+EA7ZeZehd6xmm3u9BdfoKczwaY36WjLp/wQo FBjtE6G1wZYE6+Pxq6Uvhtzgiliquuud/WSSLJIDD5HpEVHTLe9FFvRnV2UIfkV/hXLR hEk3d4RB55w05rfUS7IM9iR8b46kPoXy1RHuoRf/uEKWYG06dbuVygikIbf1TZ4bnau7 8K668cjLW899TWYtlhq8pu7OxL3eaAGmobYX5/0YRS8WvzZHgIkve2+wpCslUJaA6qaL D/kg== X-Gm-Message-State: AC+VfDw9V9jSZSzOtVD8CnziqEAMcHlTImxBk4l0ZN648wh/fOuWGbXq 05yceLXG2WUJGGSq8qkIOstyGw== X-Received: by 2002:a92:dc8c:0:b0:339:f011:77f5 with SMTP id c12-20020a92dc8c000000b00339f01177f5mr640978iln.12.1685990803647; Mon, 05 Jun 2023 11:46:43 -0700 (PDT) Received: from stbirv-lnx-2.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id 72-20020a63034b000000b005344b30d449sm6140831pgd.86.2023.06.05.11.46.42 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Jun 2023 11:46:43 -0700 (PDT) From: Justin Chen To: netdev@vger.kernel.org Cc: simon.horman@corigine.com, Justin Chen , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , Daniil Tatianin , Marco Bonelli , Gal Pressman , Jiri Pirko , Sean Anderson , Vincent Mailhol , Kuniyuki Iwashima , linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next] ethtool: ioctl: improve error checking for set_wol Date: Mon, 5 Jun 2023 11:46:16 -0700 Message-Id: <1685990778-34039-1-git-send-email-justin.chen@broadcom.com> X-Mailer: git-send-email 2.7.4 X-Spam-Status: No, score=-1.0 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 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?1767890592570837396?= X-GMAIL-MSGID: =?utf-8?q?1767890592570837396?= 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. Reviewed-by: Simon Horman Signed-off-by: Justin Chen --- 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;