From patchwork Mon Mar 27 18:37:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mahesh Bandewar X-Patchwork-Id: 743950 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vsN8c3phZz9s1y for ; Tue, 28 Mar 2017 05:38:56 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bandewar-net.20150623.gappssmtp.com header.i=@bandewar-net.20150623.gappssmtp.com header.b="iNkiu5Q9"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752263AbdC0Siy (ORCPT ); Mon, 27 Mar 2017 14:38:54 -0400 Received: from mail-pg0-f68.google.com ([74.125.83.68]:35442 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751364AbdC0Siw (ORCPT ); Mon, 27 Mar 2017 14:38:52 -0400 Received: by mail-pg0-f68.google.com with SMTP id g2so14967964pge.2 for ; Mon, 27 Mar 2017 11:38:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bandewar-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=tyqgV7OKW16f89dfASbw8ntCkwd/N4Dlxfmr+4UTas0=; b=iNkiu5Q9FBUh/1ioZeclZttmxS1cAeUy7aPaXhG0JIVkKC442Zlyw5pN662BnVNhpJ efrNGIR9e4K90Eb7PJOlyF4frsYTbgL0BsspVlDsRyIybd1QwP1nndnvFlsDF33QNUUR deEtKMswYYG8a67HQjFZaPp7crnRiBezOSgvBiVAPynFj0c5DBO2yhkvHYNoeV9k6a7y D3VmF8FmYCHPXLt8PQlo7SuguApA8eK0tSBfCbYJ0hTkB6IJ0nZWx21AucCak0M+HLSU AHBBKPh/rlhBw15+47ABZzIitpwHtH71ClUNIZ4XYI7ifEDvAzbNzuQRulBIZ2RvpvRl MgQg== 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; bh=tyqgV7OKW16f89dfASbw8ntCkwd/N4Dlxfmr+4UTas0=; b=F39Cg39WnFjlakXAlVrMWMOLwu3rnQzeO/XjxeY5hkWUlfV0KckCpggy4Dp3P1geCg OOp2I5RPghvLgXQqvi4x5uKIVtDN7Bzn5OUSLuCdj2n8QqTP/lVuupOVMG4hAMAa/f8y SmJLrppUH0eh/1s9BlIFOMZYEMPIoiafVyvTJNn2JLpVtbSp6epWhvKHVyZaDEDtYxut xwH/v8swdgm5khNwq1KIN06fO303CbQSkNffwWFQ4IuIO5eLisi0xaCrJlsVoGEtJKG/ sZmXsPHp6u+a7NvkTSl7s5MaooP8xfyyRiqm3+uHumfdTTXUFRjNm7xuWT25/MvEqtYn 9xSA== X-Gm-Message-State: AFeK/H06lSxHsaFWafGR84QbwNyS7HIVEWyE2InqZ62KIxPzaDgC12inpS5qtg8KRqiUAQ== X-Received: by 10.98.80.208 with SMTP id g77mr27265797pfj.249.1490639859711; Mon, 27 Mar 2017 11:37:39 -0700 (PDT) Received: from localhost ([2620:0:1000:3012:18b6:8c75:2322:90f6]) by smtp.gmail.com with ESMTPSA id s3sm2526246pgn.55.2017.03.27.11.37.39 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Mon, 27 Mar 2017 11:37:39 -0700 (PDT) From: Mahesh Bandewar To: Jay Vosburgh , Andy Gospodarek , Veaceslav Falico , Nikolay Aleksandrov , David Miller , Eric Dumazet Cc: netdev , Mahesh Bandewar , Mahesh Bandewar Subject: [PATCH next 4/5] bonding: correctly update link status during mii-commit phase Date: Mon, 27 Mar 2017 11:37:37 -0700 Message-Id: <20170327183737.30989-1-mahesh@bandewar.net> X-Mailer: git-send-email 2.12.1.578.ge9c3154ca4-goog Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Mahesh Bandewar bond_miimon_commit() marks the link UP after attempting to get the speed and duplex settings for the link. There is a possibility that bond_update_speed_duplex() could fail. This is another place where it could result into an inconsistent bonding link state. With this patch the link will be marked UP only if the speed and duplex values retrieved have sane values and processed further. Signed-off-by: Mahesh Bandewar --- drivers/net/bonding/bond_main.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index ad317bb63193..6cea964ab70a 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -2125,7 +2125,12 @@ static void bond_miimon_commit(struct bonding *bond) continue; case BOND_LINK_UP: - bond_update_speed_duplex(slave); + if (bond_update_speed_duplex(slave)) { + netdev_warn(bond->dev, + "failed to get link speed/duplex for %s\n", + slave->dev->name); + continue; + } bond_set_slave_link_state(slave, BOND_LINK_UP, BOND_SLAVE_NOTIFY_NOW); slave->last_link_up = jiffies;