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

做代购的流程 韩国网站友情贴吧

做代购的流程 韩国网站,友情贴吧,wordpress多主题破解版,天津网站建站模板背景 最近移植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/100087.html

相关文章:

  • 做游戏人设计网站宁德市中医院
  • ASP做旅游网站代码杭州排名推广
  • 怎么根据网站前端做网站后台外链网
  • 那个网站做推广比较好品牌广告语经典100条
  • 购买一级域名做网站企业培训师资格证报考2022
  • 漳州网站制作网站建设策划书案例
  • 哪做网站最好佛山做优化的公司
  • 成都网站建设哪个好建网站怎么建
  • 网站做SEO优化多少钱武汉网站开发公司seo
  • 网站建设哪家go好应用商店下载
  • 网站开发社会可行性分析怎么写正规的推文平台
  • 学院网站设计流程关键词排名优化价格
  • 厦门建设厅查询网站首页上海知名网站制作公司
  • 开发大型网站的最主流语言长春免费网上推广
  • 要建一个优惠卷网站怎么做水果网络营销策划方案
  • 网站调用网页怎么做谷歌搜索引擎入口手机版
  • 百度云 wordpress 教程视频长沙谷歌seo收费
  • 陇西哪里能学做网站新站网站推广公司
  • 西安微信网站建设制作免费个人网站
  • 网站页尾设计广州网络广告推广公司
  • 网站视频链接怎么做的最新国内新闻事件今天
  • o2o网站建设行情关键词优化工具互点
  • wordpress如何建立网站优秀的网页设计网站
  • 百度网址大全网址导航大全苏州网站关键词优化推广
  • 网站建设教程照片淘宝seo优化是什么
  • 做网站推广的价格网站seo置顶 乐云践新专家
  • 青浦练塘网站建设私域流量运营管理
  • 母婴网站建设方案太原做网站推广的公司
  • 厦门移动网站建设哪家专业线上推广渠道主要有哪些
  • 安徽网站开发培训价格百度小程序入口官网