Bug 220033 - [if_ixgb] sys/dev/ixgb/if_ixgb.c: a sleep-under-mutex bug in ixge_get_buf
Summary: [if_ixgb] sys/dev/ixgb/if_ixgb.c: a sleep-under-mutex bug in ixge_get_buf
Status: Closed Not A Bug
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 11.0-RELEASE
Hardware: i386 Any
: --- Affects Only Me
Assignee: freebsd-net (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-06-16 08:09 UTC by Jia-Ju Bai
Modified: 2017-06-18 11:37 UTC (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jia-Ju Bai 2017-06-16 08:09:08 UTC
The ixgb driver may sleep under a mutex, and the function call path in file "sys/dev/ixgb/if_ixgb.c" in FreeBSD 11.0 is:
ixgb_init [line 750: acquire the mutex]
  ixgb_init_locked [line 751]
    ixgb_setup_receive_structures [line 699]
      ixgb_allocate_receive_structures [line 1913]
        ixgb_get_buf [line 1885]
          bus_dmamap_load(BUS_DMA_WAITOK) [line 1812] --> may sleep

The possible fix of these bugs is to set the last parameter in bus_dmamap_load to "BUS_DMA_NOWAIT".

This bug is found by a static analysis tool written by myself, and it is checked by my review of the FreeBSD code.

By the way, I am a freshman in developing FreeBSD drivers, and I am willing to submit a patch. But I do not know how to write and submit a patch, and where to submit, so I am looking forward to useful advice :)

Jia-Ju Bai
Comment 1 Jia-Ju Bai 2017-06-18 11:37:11 UTC
I have read the manual page, and found bus_dmamap_load is not blocked.
Sorry for my wrong report.