lkml.org 
[lkml]   [2020]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 596/639] s390/qeth: Fix error handling during VNICC initialization
    Date
    From: Alexandra Winter <wintera@linux.ibm.com>

    [ Upstream commit b528965bcc827dad32a8d21745feaacfc76c9703 ]

    Smatch discovered the use of uninitialized variable sup_cmds
    in error paths.

    Fixes: caa1f0b10d18 ("s390/qeth: add VNICC enable/disable support")
    Signed-off-by: Alexandra Winter <wintera@linux.ibm.com>
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/s390/net/qeth_l2_main.c | 11 +++++++----
    1 file changed, 7 insertions(+), 4 deletions(-)

    diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c
    index c238b190b3c93..b9be2c08e8dfa 100644
    --- a/drivers/s390/net/qeth_l2_main.c
    +++ b/drivers/s390/net/qeth_l2_main.c
    @@ -2330,10 +2330,10 @@ static bool qeth_l2_vnicc_recover_char(struct qeth_card *card, u32 vnicc,
    static void qeth_l2_vnicc_init(struct qeth_card *card)
    {
    u32 *timeout = &card->options.vnicc.learning_timeout;
    + bool enable, error = false;
    unsigned int chars_len, i;
    unsigned long chars_tmp;
    u32 sup_cmds, vnicc;
    - bool enable, error;

    QETH_CARD_TEXT(card, 2, "vniccini");
    /* reset rx_bcast */
    @@ -2354,7 +2354,10 @@ static void qeth_l2_vnicc_init(struct qeth_card *card)
    chars_len = sizeof(card->options.vnicc.sup_chars) * BITS_PER_BYTE;
    for_each_set_bit(i, &chars_tmp, chars_len) {
    vnicc = BIT(i);
    - qeth_l2_vnicc_query_cmds(card, vnicc, &sup_cmds);
    + if (qeth_l2_vnicc_query_cmds(card, vnicc, &sup_cmds)) {
    + sup_cmds = 0;
    + error = true;
    + }
    if (!(sup_cmds & IPA_VNICC_SET_TIMEOUT) ||
    !(sup_cmds & IPA_VNICC_GET_TIMEOUT))
    card->options.vnicc.getset_timeout_sup &= ~vnicc;
    @@ -2363,8 +2366,8 @@ static void qeth_l2_vnicc_init(struct qeth_card *card)
    card->options.vnicc.set_char_sup &= ~vnicc;
    }
    /* enforce assumed default values and recover settings, if changed */
    - error = qeth_l2_vnicc_recover_timeout(card, QETH_VNICC_LEARNING,
    - timeout);
    + error |= qeth_l2_vnicc_recover_timeout(card, QETH_VNICC_LEARNING,
    + timeout);
    chars_tmp = card->options.vnicc.wanted_chars ^ QETH_VNICC_DEFAULT;
    chars_len = sizeof(card->options.vnicc.wanted_chars) * BITS_PER_BYTE;
    for_each_set_bit(i, &chars_tmp, chars_len) {
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-01-24 12:35    [W:5.426 / U:0.656 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site