• Anton Vorontsov's avatar
    ucc_geth: Fix NULL pointer dereference in uec_get_ethtool_stats() · e0ad2cd8
    Anton Vorontsov authored
    In commit 3e73fc9a ("ucc_geth: Fix IO
    memory (un)mapping code") I fixed ug_regs IO memory leak by properly
    freeing the allocated memory. But ethtool_stats() callback doesn't
    check for ug_regs being NULL, and that causes following oops if
    'ethtool -S' is executed on a closed eth device:
    
      Unable to handle kernel paging request for data at address 0x00000180
      Faulting instruction address: 0xc0208228
      Oops: Kernel access of bad area, sig: 11 [#1]
      ...
      NIP [c0208228] uec_get_ethtool_stats+0x38/0x140
      LR [c02559a0] ethtool_get_stats+0xf8/0x23c
      Call Trace:
      [ef87bcd0] [c025597c] ethtool_get_stats+0xd4/0x23c (unreliable)
      [ef87bd00] [c025706c] dev_ethtool+0xfe8/0x11bc
      [ef87be00] [c0252b5c] dev_ioctl+0x454/0x6a8
      ...
      ---[ end trace 77fff1162a9586b0 ]---
      Segmentation fault
    
    This patch fixes the issue.
    Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e0ad2cd8
ucc_geth_ethtool.c 10.4 KB