在使用Kerberos的NFSv3文件复制过程中,偶发返回-EACCES错误,最初难以重现也无明显模式出现。
Linux内核仅缓存最新的GSS序列号,当NFS客户端因超时重传请求并更新序列号后,接收到旧响应时HMAC校验失败导致错误。
作者利用FUSE随机文件系统、bpftrace内核插桩、Wireshark插件和NFQUEUE人工延迟等手段搭建测试环境并成功重现该Heisenbug。
RFC2203建议缓存所有待匹配的序列号以验证响应,但Linux实现只保留一条记录,导致校验失败后自触发重传循环。
作者提交两份补丁:一是引入序列号缓存以匹配旧响应;二是在校验失败时不立即重传,并已合并至Linux 6.16。
Get notified when new stories are published for "🇨🇳 Hacker News 简体中文"