• V
    net: ethtool: fix NULL pointer dereference in pause_prepare_data() · f5be9caf
    Vladimir Oltean 提交于
    In the following call path:
    
    ethnl_default_dumpit
    -> ethnl_default_dump_one
       -> ctx->ops->prepare_data
          -> pause_prepare_data
    
    struct genl_info *info will be passed as NULL, and pause_prepare_data()
    dereferences it while getting the extended ack pointer.
    
    To avoid that, just set the extack to NULL if "info" is NULL, since the
    netlink extack handling messages know how to deal with that.
    
    The pattern "info ? info->extack : NULL" is present in quite a few other
    "prepare_data" implementations, so it's clear that it's a more general
    problem to be dealt with at a higher level, but the code should have at
    least adhered to the current conventions to avoid the NULL dereference.
    
    Fixes: 04692c90 ("net: ethtool: netlink: retrieve stats from multiple sources (eMAC, pMAC)")
    Reported-by: NEric Dumazet <edumazet@google.com>
    Signed-off-by: NVladimir Oltean <vladimir.oltean@nxp.com>
    Reported-by: syzbot+9d44aae2720fc40b8474@syzkaller.appspotmail.com
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    f5be9caf
pause.c 6.3 KB