免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: gaojl0728

[网络子系统] 又发现一个Linux Kernel的Bug [复制链接]

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
发表于 2014-08-18 11:21 |显示全部楼层
回复 4# Godbach


    不好意思坑了你哈,dst_release没有bug,不存在竞争条件, 根源是我错误的理解了atomic_dec_return, 详情看我10楼的分析。

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
发表于 2014-08-18 11:23 |显示全部楼层
回复 5# mnipxh


    恩,应该是这个原因,但是因为一开始我就认准了是atomic_dec_return导致的问题,导致我判断错误,没有进一步分析根源。

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
发表于 2014-08-18 11:24 |显示全部楼层
回复 8# smalloc


    恩,只要等于0的路径执行过就行了, 后面有没有负数没什么问题。

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
发表于 2014-08-18 11:26 |显示全部楼层
回复 9# amarant


    谢谢支持, 其实我这个贴就是个反面教材哈哈, 没有深入的调查研究就上来发帖, 实在是不好意思。

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
发表于 2014-08-18 11:30 |显示全部楼层
atomic_dec_return其实就是文如起名, 它能够保证“递减和返回”整体是一个原子操作,

如果把:
newrefcnt = atomic_dec_return(&dst->__refcnt);
换成:
atomic_dec(&dst->__refcnt);
newrefcnt = dst->__refcnt;

就会存在我说的那个竞争条件了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP