当前位置: 首页 > news >正文

自己如何做独立网站达内教育

自己如何做独立网站,达内教育,内蒙古城乡建设厅网站资质公告,网店怎么开大概需要多少钱背景 最近移植TI电量计芯片bq40z50的驱动,移植完毕后,能正常读取电池信息了,但是无意中发现驱动卸载会导致Linux卡死,死前终端闪过大量打印,将putty的缓冲区都耗尽了,必须启用syslog转发并用visual syslog…

背景

最近移植TI电量计芯片bq40z50的驱动,移植完毕后,能正常读取电池信息了,但是无意中发现驱动卸载会导致Linux卡死,死前终端闪过大量打印,将putty的缓冲区都耗尽了,必须启用syslog转发并用visual syslog server接收才能全部看到:
驱动卸载导致Linux卡死
虽然实际应用中一般不会卸载此类驱动,但考虑到后果严重,还是想解决一下。

问题根因

其实,这是一个double freeBUG。

驱动在加载时调用devm_power_supply_register()注册了一个power_supply对象,在卸载时调用power_supply_unregister() 释放了之前注册的power_supply对象。

看上去一切正常,然而devm前缀意味着Linux会在驱动卸载后再次调用一次power_supply_unregister() ,释放devm_power_supply_register()之前注册的对象——即刚才已经释放了的power_supply对象——从而产生了double free操作,导致Linux卡死。

解决方法

fg_psy_register()函数里的devm_power_supply_register()替换成power_supply_register(),即去掉devm前缀。

直接删除fg_psy_unregister函数及对其的调用更好吧?

是的,这样更好,因为devres会在驱动加载失败时或卸载时自动(逆序)释放devm_xxx申请的资源。

不过考虑到有些设备相关操作可能会在第m个资源和第n个资源之间执行,如果用devm接口,则该操作就提前到所有资源释放前执行,可能会引入问题,还是保守点吧。

http://www.mmbaike.com/news/104397.html

相关文章:

  • 餐饮系统的网站应该怎么做正规代运营公司排名
  • 西安网站排名优化培训深圳网络营销渠道
  • wordpress 投稿 标签seo博客网站
  • 最美情侣高清视频播放天津seo优化公司哪家好
  • 网站怎么备份5118关键词挖掘工具
  • 推广做网站多少钱百度指数是啥
  • 欧美做的爱爱网站有哪些北京网站优化平台
  • 大型网站 css做网站的费用
  • 企业网站的新闻资讯版块有哪些公众号推广一个6元
  • 网站功能报价明细表免费的关键词挖掘工具
  • 网站建设毕业设计中期检查seo优化外链平台
  • 长安做网站公司企业营销策划有限公司
  • 国际贸易app平台好看的seo网站
  • 没网站怎么做二维码扫描连接排名优化关键词公司
  • 海东高端网站建设价格优化网站排名方法
  • 帝国cms做动态网站性能如何德阳seo
  • 厦门做企业网站多少钱2022磁力链接搜索引擎推荐
  • 分公司注册流程网上注册全国最好网络优化公司
  • 做网站怎么看效果营销型企业网站案例
  • 搭建网站平台有前途吗百度竞价排名算法
  • 深圳网站制作公司新闻长沙seo报价
  • robots 网站地图贵州萝岗seo整站优化
  • 对内部网站建设的意见和建议seo营销服务
  • 电脑手机自适应网站的建设百度查重免费
  • 定制网站开发蒙特超级软文网
  • 做破解的网站厦门关键词优化网站
  • 贵阳网站建设方案书武汉seo群
  • 黄页网站推广app排名函数rank怎么用
  • 学做网站要多久多少钱做网站哪个平台好
  • 自己的公司怎么做网站重庆seo关键词优化服务