我使用my_do_sync_read和my_do_sync_write函数替换ramfs源代码中的do_sync_read和do_sync_write来加密写入页面的数据。从nano写入文件或从dd指令阻止写入都成功。但是当我使用vim保存文件时,它无法写入并显示:ml_upd_block0():没有得到块0? 。
以下代码是我的简单测试,并且遇到了相同的问题:
ssize_t my_do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos)
{
ssize_t size_ret;
int i;
size_ret=do_sync_read(filp, buf, len, ppos);
for(i=0;i<size_ret;i++)
buf[i]^=0xff;
return size_ret;
}
ssize_t my_do_sync_write(struct file *filp, char __user *buf, size_t len, loff_t *ppos)
{
int i;
for(i=0;i<len;i++)
buf[i]^=0xff;
return do_sync_write(filp, buf, len, ppos);
}