QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2386|回复: 0

[请教]文件系统元数据加密问题

[复制链接]
发表于 2007-5-8 22:08:09 | 显示全部楼层 |阅读模式
《linux设备驱动编程 第三版》(LDD3) 中的块设备例子sbull。实际设备是一块内存。

request处理函数最后会调用下面这个函数来实现读写:其中dev->data是那块实际的内存。

本来很正常。但如果我想把数据加密,使得在内存中的数据是加密的。即在写前加密,读后解密。加解密过程在驱动中实现,对内核是透明的。如下面这个函数中注释掉的两行。

static void sbull_transfer(struct sbull_dev *dev, unsigned long sector,
                unsigned long nsect, char *buffer, int write)
{
        unsigned long offset = sector*KERNEL_SECTOR_SIZE;
        unsigned long nbytes = nsect*KERNEL_SECTOR_SIZE;

        if ((offset + nbytes) > dev->size) {
                printk (KERN_NOTICE "Beyond-end write (%ld %ld)\n", offset, nbytes);
                return;
        }
        if (write) {
                //encrypt((unsigned char *)buffer, nbytes);
                memcpy(dev->data + offset, buffer, nbytes);
        } else {
                memcpy(buffer, dev->data + offset, nbytes);
                //decrypt((unsigned char *)buffer, nbytes);
        }
}


问题就出现了。装载这个驱动模块后,对设备 fdisk,正常。mkfs正常。但mount时,报 错误的文件系统 的错误。

在 /var/log/message中的信息是:
May  2 21:09:08 wub kernel: EXT2-fs error (device vdefsa1): ext2_check_descriptors: Block bitmap for group 0 not in group (block 4260704353)!
May  2 21:09:08 wub kernel: EXT2-fs: group descriptors corrupted!

好像是元数据越界。

我觉得加解密对内核是透明的,为什么会报错呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-25 05:07 , Processed in 0.056548 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表