Feature #6884
closedFeature #6880: Investigate what dependent modules should be analysed together to find well known bugs
Example of multi-module dependency for detecting data races
0%
Description
The module drivers/net/wireless/rndis_wlan.ko
contains struct driver_info with handlers
.bind = rndis_wlan_bind
.indication = rndis_wlan_indication
rndis_wlan_bind access shared data priv->current_command_oid using lock mutex_lock(&priv->command_lock);
while rndis_wlan_indication access it without locks
thus data race is signalled.
Investigation of that case leads to understanding that indicate handler rndis_wlan_indication is called from the other module by function rndis_command (defined in drivers/net/usb/rndis_host.c) and that function is called from rndis_wlan.ko under mutex_lock(&priv->command_lock) (e.g. see rndis_query_oid).
Thus access to priv->current_command_oid is protected in rndis_wlan_indication.
Details of race detection configuration
NewRefinementStrategy, withoutRefinementLimit, without ET_FILTER, ignoreEmptyLockset, probeFilter+disconnectFilter linux-3.16-rc1 drivers/net/wireless/rndis_wlan.ko entry_point_struct_rndis_wlan_private_*current_command_oid
Updated by Evgeny Novikov about 8 years ago
- Category changed from Environment models to Program fragments generation
- Priority changed from Normal to High
- Parent task changed from #6563 to #6880
First of all we need to understand how to prepare a verification object that can help to resolve the issue.
Updated by Alexey Polushkin almost 8 years ago
This module requires 'drivers/net/usb/rndis_host.ko' module. Any strategy ('cluster size' parameter equals 2 or more) creates required group.