首頁
Alibaba Cloud Linux
服務支持
Alibaba Cloud Linux常見問題
Alibaba Cloud Linux 3 EROFS文件系統掛載功能異常導致系統宕機的修復方案
本文為您介紹Alibaba Cloud Linux 3(kernel-5.10.134-15.al8)EROFS文件系統掛載功能異常導致系統宕機的原因及解決方案。
問題描述
在符合如下條件的Alibaba Cloud Linux 3實例中,通過塊設備掛載EROFS文件系統可能會導致系統宕機。
鏡像:Alibaba Cloud Linux 3.2104。
內核:kernel-5.10.134-15.al8。
執行以下命令判斷當前系統是否存在問題。
sudo yum install -y erofs-utils
mkdir -p test mnt
mkfs.erofs foo.erofs test
sudo mount -t erofs -o loop foo.erofs mnt
如果出現此問題,系統將會發生宕機,并提供如下調用棧信息。
[ 225.747952] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000370
..
[ 225.752658] CPU: 3 PID: 5829 Comm: mount Kdump: loaded Not tainted 5.10.134-15.al8.aarch64 #1
[ 225.753089] Hardware name: Alibaba Cloud Alibaba Cloud ECS, BIOS 1.0.0 01/01/2017
[ 225.753468] pstate: 62401005 (nZCv daif +PAN -UAO +TCO BTYPE=--)
[ 225.753775] pc : __erofs_bread+0x64/0x1d0 [erofs]
[ 225.754016] lr : erofs_read_metabuf+0x44/0x80 [erofs]
[ 225.754271] sp : ffff800013fcbb00
[ 225.754442] x29: ffff800013fcbb00 x28: ffff0000c5ac0000
[ 225.754711] x27: 0000000000000000 x26: ffff0000ef1dcf50
[ 225.754982] x25: ffff0000d9896b80 x24: 0000000000000000
[ 225.755271] x23: 0000000000000001 x22: ffff0000ef1dcdd8
[ 225.755540] x21: ffff800013fcbbb0 x20: 0000000000000000
[ 225.755810] x19: 0000000000000000 x18: 0000000000000000
[ 225.756079] x17: 0000000000000000 x16: 0000000000000000
[ 225.756347] x15: ffffffffffffffff x14: ffffff0000000000
[ 225.756618] x13: 00000000000003f3 x12: 0000000000000000
[ 225.756888] x11: 0000000000000040 x10: ffff800011d169b8
[ 225.757158] x9 : ffff800009124a84 x8 : ffff0000c7cd9e00
[ 225.757427] x7 : 0000000000000000 x6 : 000000000000003f
[ 225.757697] x5 : ffff0000c773f000 x4 : 0000000000000001
[ 225.757966] x3 : 0000000000000000 x2 : ffff0000ef1dcdd8
[ 225.758235] x1 : ffff800013fcbbb0 x0 : 0000000000000000
[ 225.758508] Call trace:
[ 225.758636] __erofs_bread+0x64/0x1d0 [erofs]
[ 225.758859] erofs_read_metabuf+0x44/0x80 [erofs]
[ 225.759112] erofs_read_superblock+0x60/0x264 [erofs]
[ 225.759370] erofs_fc_fill_super+0xf0/0x310 [erofs]
[ 225.759621] get_tree_bdev+0x15c/0x250
[ 225.760109] erofs_fc_get_tree+0x38/0x54 [erofs]
[ 225.760662] vfs_get_tree+0x2c/0xf0
[ 225.761157] do_new_mount+0x164/0x1d0
[ 225.761652] path_mount+0x1bc/0x570
[ 225.762133] __arm64_sys_mount+0x114/0x140
[ 225.762633] el0_svc_common+0x90/0x250
[ 225.763124] do_el0_svc+0x7c/0x90
[ 225.763579] el0_svc+0x1c/0x30
[ 225.764019] el0_sync_handler+0xa8/0xb0
[ 225.764498] el0_sync+0x168/0x180
[ 225.764949] Code: eb1b001f 540003e0 aa0103e0 97ffff6c (f941bb00)
[ 225.765543] ---[ end trace 50d06630866b5b03 ]---
問題根因
kernel-5.10.134-15.al8內核EROFS文件系統相關新特性對__erofs_bread()函數進行修改時未正確處理通用塊設備掛載的場景,導致系統出現空指針解引用。
解決方案
安裝內核熱補丁。
sudo yum install -y kernel-hotfix-18359162-5.10.134-15
避免使用kernel-5.10.134-15.al8內核版本,例如升級至kernel-5.10.134-15.1.al8及以后版本。具體操作,請參見更換內核版本。
文檔內容是否對您有幫助?