我在项目中使用以下代码段
mutex_lock(&driver->diag_file_mutex);
if (driver->md_session_map[peripheral] &&
driver->md_session_map[peripheral]->task) {
stat = send_sig_info(info.si_signo, &info,
driver->md_session_map[peripheral]->task);
}
mutex_unlock(&driver->diag_file_mutex);
在这个特定场景中,其他一些进程正在释放驱动程序 - > md_session_map [peripheral] - >任务(任务的内存转储是0x6B6B6B6B,表示页面已被释放,而我的执行路径中的代码不是之前释放,导致内核恐慌。
由于值为0x6B6B6B6B,因此检入'if'条件无用。 Mutex也没有任何用处。
有没有办法检查条件,如果任务被释放,或者如果被释放通知我的驱动程序。急需帮助。