From patchwork Wed Nov 7 18:25:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Heimes X-Patchwork-Id: 994420 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=canonical.com Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 42qvwd4PyQz9s7h; Thu, 8 Nov 2018 05:25:21 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1gKSVx-0004yj-BG; Wed, 07 Nov 2018 18:25:17 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.86_2) (envelope-from ) id 1gKSVw-0004yP-LK for kernel-team@lists.ubuntu.com; Wed, 07 Nov 2018 18:25:16 +0000 Received: from mail-lf1-f70.google.com ([209.85.167.70]) by youngberry.canonical.com with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from ) id 1gKSVw-0002EW-D4 for kernel-team@lists.ubuntu.com; Wed, 07 Nov 2018 18:25:16 +0000 Received: by mail-lf1-f70.google.com with SMTP id g1-v6so2149577lfl.23 for ; Wed, 07 Nov 2018 10:25:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=ibEyqwKysOAOgBcEFvotYcIk8DUOZDghrx2SjHkOJVc=; b=DDLNfH3QFebtfI9r+S0EWsWxuxuF3J5nKeGc6LlkCL/r2EKb4z3ESFaCzHbSaVTBki Esb5bjppFaLJVZewcK0fWGAtn8BfBuU/nrZGx8Q9lqz2mVZzHFc8gK3RmqOQ0bb0Itwq +EjRiyKeOwsySlCAyP40RDcIW7PeklowTe0fStIwaJhkbveM3V/DL8z8OQwqjKm3eOHA 3ATB7Y57NKbX+3PMUZvK7sUOB5Ue+iF0H1ZRLoWZuEePCe+Blz3gPO5MkZ29HkF8R8ea E1yzeOyq+HDwDIfCe1qry54qvVC2IgnSgBg45w/CJXODISfgky7ZtgHHw1dF5qKL+Rpd 11ng== X-Gm-Message-State: AGRZ1gJEeeEVjOmihvqqweFL+SXyzf8qgZwsmlbKIJSR9SCBicVBRIbZ GmbkAjlA0YmNhKREd/BeJZ6hjnP9TButTG6OyIeVznC+GdO5NQtnkIOhGz1CHax0q4VKZOnR8r2 khhF1tcViutHxaz9baeZ/kpvspUzzkYGx+f5lnm+/V1G+LL7V+Do2ZQ7n6w== X-Received: by 2002:a2e:4503:: with SMTP id s3-v6mr882380lja.44.1541615115445; Wed, 07 Nov 2018 10:25:15 -0800 (PST) X-Google-Smtp-Source: AJdET5diP1NGgy6zzWiEKNWG4f0hxX4yj8aEWDbG7uE8STjt3xD0fiFav6zLiH7cPmLplz7AwteE6ChWcNhXdNqP5TI= X-Received: by 2002:a2e:4503:: with SMTP id s3-v6mr882367lja.44.1541615115160; Wed, 07 Nov 2018 10:25:15 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Frank Heimes Date: Wed, 7 Nov 2018 19:25:04 +0100 Message-ID: Subject: [SRU][Cosmic][Bionic][PATCH 4/6] s390/qeth: avoid using is_multicast_ether_addr_64bits on (u8 *)[6] To: kernel-team@lists.ubuntu.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Vasily Gorbik BugLink: http://bugs.launchpad.net/bugs/1797367 s390/qeth: avoid using is_multicast_ether_addr_64bits on (u8 *)[6] *ether_addr*_64bits functions have been introduced to optimize performance critical paths, which access 6-byte ethernet address as u64 value to get "nice" assembly. A harmless hack works nicely on ethernet addresses shoved into a structure or a larger buffer, until busted by Kasan on smth like plain (u8 *)[6]. qeth_l2_set_mac_address calls qeth_l2_remove_mac passing u8 old_addr[ETH_ALEN] as an argument. Adding/removing macs for an ethernet adapter is not that performance critical. Moreover is_multicast_ether_addr_64bits itself on s390 is not faster than is_multicast_ether_addr: is_multicast_ether_addr(%r2) -> %r2 llc %r2,0(%r2) risbg %r2,%r2,63,191,0 is_multicast_ether_addr_64bits(%r2) -> %r2 llgc %r2,0(%r2) risbg %r2,%r2,63,191,0 So, let's just use is_multicast_ether_addr instead of is_multicast_ether_addr_64bits. Fixes: bcacfcbc82b4 ("s390/qeth: fix MAC address update sequence") Reviewed-by: Julian Wiedmann Signed-off-by: Vasily Gorbik Signed-off-by: Julian Wiedmann Signed-off-by: David S. Miller (cherry-picked from commit 9d0a58fb9747afd27d490c02a97889a1b59f6be4) Signed-off-by: Frank Heimes --- @@ -157,7 +157,7 @@ static int qeth_l2_write_mac(struct qeth_card *card, u8 *mac) static int qeth_l2_remove_mac(struct qeth_card *card, u8 *mac) { - enum qeth_ipa_cmds cmd = is_multicast_ether_addr_64bits(mac) ? + enum qeth_ipa_cmds cmd = is_multicast_ether_addr(mac) ? IPA_CMD_DELGMAC : IPA_CMD_DELVMAC; int rc; diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index 7daf125..5464515 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c @@ -140,7 +140,7 @@ static int qeth_l2_send_setmac(struct qeth_card *card, __u8 *mac) static int qeth_l2_write_mac(struct qeth_card *card, u8 *mac) { - enum qeth_ipa_cmds cmd = is_multicast_ether_addr_64bits(mac) ? + enum qeth_ipa_cmds cmd = is_multicast_ether_addr(mac) ? IPA_CMD_SETGMAC : IPA_CMD_SETVMAC; int rc;