Tag: lock

在linux内核中嵌入锁定的动态分配/自由结构

我想释放一个嵌入了spin_lock的结构。 场景如下: 我有两个function f1 () { ***************** spin_lock_irqsave(&my_obj_ptr->my_lock, flags) …. …. …………………………………. here f2 is called spin_lock_irqstore(&my_obj_ptr->my_lock, flags) ******************* kfree(my_obj_ptr) } 和f2具有与f1类似的内容。 当f2被调用时,正在使用my_lock,f2必须忙着等待。 但是,当f2进入临界区时,my_obj_ptr是免费的。 内核崩溃…… 我现在想的是在struct my_obj中添加一个ref_count变量 在spin_lock_irqsave => ref_count ++之前 在spin_lock_irqstore => ref_count–之后 在免费之前,请检查ref_count变量。 现在似乎没有崩溃。 我只是想知道是否会有角落案件,我不考虑? 或者有更好的方法来处理这个问题? 任何帮助将不胜感激。 谢谢