Received: by 10.213.65.68 with SMTP id h4csp1927275imn; Thu, 5 Apr 2018 06:15:05 -0700 (PDT) X-Google-Smtp-Source: AIpwx49KXgfU62ui1esPats2n0VhpxZ0IGHIXeyXMuKlKV/JPwfNA15kSih5W1VpgsDgM3M0OVpG X-Received: by 10.99.122.28 with SMTP id v28mr15024502pgc.128.1522934105914; Thu, 05 Apr 2018 06:15:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522934105; cv=none; d=google.com; s=arc-20160816; b=oV4dPrzOnCjYW/j+9RF6acFI636WX4EHHB6xp8edzaSOm6YUzJwa2FAp0D0iyojK20 t/BwHjH49bzcvBB0LrpbubAfk/xrad0lAoYQvmJ7bBaeCpYjcNIiCRKrXs2b1exC9SMz jcFJ59y++yykpSVcm/gFYfoAQOyB/jzdOPIS9Of6El7zVNkjZmYJ5GQnWlXfzHw7lQm7 PUTk7VB0zUoX/9/lf4PsxFA+um+zmG3UpbgN83Cj6GdGwE+Nedip8cxZ/wCmYDKU9BrN yW7u4cKer2Ofh0ZEWQea+MXMylrlSDZkbZW1GXuCWFqYIJOxDKcKrk+sEiuJU4GXUh7o qndQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:mime-version:dkim-signature :arc-authentication-results; bh=2WD21nJIdcRkYGVJLwPEAjwpgesl5h0o6D7Jjp0qLIM=; b=A/8rQbkn1H+yC56w5Q6sp5w0VkUf45LoNMD/r+9wAqbkIlflDj5gEOVLbAmCyFOo7U QWSIjbKcf/LmsWAOZKc1hxPac7/96rSDBkllctreIwRf51lPfBPBVpro6lc+xLGAh8qq PCCzfym6p6kzeb3ae+XChi4dq1GVf2IMUehvWRfmOMYzEbXItm3IS+gqRgD21v5sRXYw XfgCm4ByAVYz2IlfmVsVwYkFZKL6GpuAa7AWS3gUtb6K2jHZfhC37FuMYKvFc1pn62Ue ot9i6ruzQMqfaHpCsEOXPJ3AFPZX7Mk7SP4kL8brywvwvhGGsYJGCUhDkUSfPVfbBGUq Setw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=b5DhuzpK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q74si6085871pfg.295.2018.04.05.06.14.51; Thu, 05 Apr 2018 06:15:05 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=b5DhuzpK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751469AbeDENNQ (ORCPT + 99 others); Thu, 5 Apr 2018 09:13:16 -0400 Received: from mail-qt0-f194.google.com ([209.85.216.194]:45682 "EHLO mail-qt0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751277AbeDENNP (ORCPT ); Thu, 5 Apr 2018 09:13:15 -0400 Received: by mail-qt0-f194.google.com with SMTP id f8so26790341qtg.12; Thu, 05 Apr 2018 06:13:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:from:date:message-id:subject:to:cc :content-transfer-encoding; bh=2WD21nJIdcRkYGVJLwPEAjwpgesl5h0o6D7Jjp0qLIM=; b=b5DhuzpKrHphHYI9SBD18cLGINR+Pj7tUoXkxK2No2rWApV8Jw8s3rVf6T3AO51+T9 ac9FF/rOU8MOwT6weS4h+nhCisp9lZg/YA5WrUrtk6AmRJ8NNtlyFc8oVAAqFxJuVaDh BQMyllAE+aVXbLWqBatSZCZWkYhx8ZzopgnKhN6P8VPnm18Qqndd31iHjp9IeIr2MDkv Ie8EBZ5DdYP2Yiz4Y6d+M+WVX5ZaBcEijkTA/+Gyrt7wBLyRbNl8RUS2ojPYN6a2jAfO o1LFF9MTUKx8oq/ap9H5zOeGCNicWsiEWwMgJt+54MuR3/IE0B4pFn2uZuTADref6bjV 5NgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:from:date:message-id:subject :to:cc:content-transfer-encoding; bh=2WD21nJIdcRkYGVJLwPEAjwpgesl5h0o6D7Jjp0qLIM=; b=XU5/7E6UnZeHepD92ZCIzfw7eMToMfu1tWsaX60a71ISKDdwcuF4R4Bq6YmkdOkANJ SGD+e1Rpk5EZRIOb7JpOAiqHra2T4Tqkbt+JHCOrCrBOC5UNl4xaF7rKzMPm42qrq6VX 0Bwl0hg9fKs/4BhRnt6qFO0wwmdoOUqlVp0Dpzf3hHuT+oY66+1ToXcyb2+AfxloJ+Va Tzgj/joqh9WI//FuOUqW9IaG9JE4//tHcOxK3sYBYKvi9SQeJqYoWZ+MSryCYke2zbKZ afhtva6q+IQvIzpS0R/BFr19z0gC1Fvl0WTp/fMQJcAXln4kEzKjvjp6O6RE/UBbycmT w4Cw== X-Gm-Message-State: ALQs6tBq4qB2pNzI0N20eMYLJ5zfEh2Kgg36PT5fhWiVg3BHTSztfBvm IF/LgWSLjyB/OU6cQLG+kmFWXpPwlEpZV9iX9TRD/2LS X-Received: by 10.200.44.164 with SMTP id 33mr33226199qtw.160.1522933994370; Thu, 05 Apr 2018 06:13:14 -0700 (PDT) MIME-Version: 1.0 Received: by 10.200.54.147 with HTTP; Thu, 5 Apr 2018 06:13:13 -0700 (PDT) From: Geert Uytterhoeven Date: Thu, 5 Apr 2018 15:13:13 +0200 X-Google-Sender-Auth: fX86iWjTJ-mAbgt24Nj5kmdpJtw Message-ID: Subject: net_dim() may use uninitialized data To: Tal Gilboa Cc: netdev , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Tal, With gcc-4.1.2: drivers/net/ethernet/broadcom/bcmsysport.c: In function =E2=80=98bcm_sy= sport_poll=E2=80=99: include/linux/net_dim.h:354: warning: =E2=80=98curr_stats.ppms=E2=80=99= may be used uninitialized in this function include/linux/net_dim.h:354: warning: =E2=80=98curr_stats.bpms=E2=80=99= may be used uninitialized in this function include/linux/net_dim.h:354: warning: =E2=80=98curr_stats.epms=E2=80=99= may be used uninitialized in this function Indeed, ... | static inline void net_dim_calc_stats(struct net_dim_sample *start, | struct net_dim_sample *end, | struct net_dim_stats *curr_stats) | { | /* u32 holds up to 71 minutes, should be enough */ | u32 delta_us =3D ktime_us_delta(end->time, start->time); | u32 npkts =3D BIT_GAP(BITS_PER_TYPE(u32), end->pkt_ctr, start->pk= t_ctr); | u32 nbytes =3D BIT_GAP(BITS_PER_TYPE(u32), end->byte_ctr, | start->byte_ctr); | | if (!delta_us) | return; ... if delta_us is zero, none of the below will be initialized ... | curr_stats->ppms =3D DIV_ROUND_UP(npkts * USEC_PER_MSEC, delta_us= ); | curr_stats->bpms =3D DIV_ROUND_UP(nbytes * USEC_PER_MSEC, delta_u= s); | curr_stats->epms =3D DIV_ROUND_UP(NET_DIM_NEVENTS * USEC_PER_MSEC= , | delta_us); | } | | static inline void net_dim(struct net_dim *dim, | struct net_dim_sample end_sample) | { | struct net_dim_stats curr_stats; | u16 nevents; | | switch (dim->state) { | case NET_DIM_MEASURE_IN_PROGRESS: | nevents =3D BIT_GAP(BITS_PER_TYPE(u16), | end_sample.event_ctr, | dim->start_sample.event_ctr); | if (nevents < NET_DIM_NEVENTS) | break; | net_dim_calc_stats(&dim->start_sample, &end_sample, | &curr_stats); ... in the output parameter curr_stats ... | if (net_dim_decision(&curr_stats, dim)) { ... and net_dim_decision will make some funky decisions based on uninitialized data. What are the proper values to initialize curr_stats with? Alternatively, perhaps the call to net_dim_decision() should be made dependent on delta_us being non-zero? | dim->state =3D NET_DIM_APPLY_NEW_PROFILE; | schedule_work(&dim->work); | break; | } | /* fall through */ | case NET_DIM_START_MEASURE: | dim->state =3D NET_DIM_MEASURE_IN_PROGRESS; | break; | case NET_DIM_APPLY_NEW_PROFILE: | break; | } | } Gr{oetje,eeting}s, Geert --=20 Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k= .org In personal conversations with technical people, I call myself a hacker. Bu= t when I'm talking to journalists I just say "programmer" or something like t= hat. -- Linus Torvalds