-------- Original Message --------
hello I am working on adding a simple encryption to file contents in ext4 driver (for learning purposes) I added simple XOR encryption to aio_read and aio_write functions and it worked until I faced this problem:
when I open a file in encrypted filesystem using VIM text editor and when I try to save it it gives me this error:
pointer block id wrong can not find line 1
and it just corrupts the entire file!
this is my aio_write function:
aio_write_enc(struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, loff_t pos) { size_t i; ssize_t ret; char *data=vmalloc(sizeof(char)*iov->iov_len); copy_from_user(data,iov->iov_base,iov->iov_len);
for(i=0;i<iov->iov_len;i++) { data[i]^=5; } struct iovec iov_enc= { .iov_base = iov->iov_base, .iov_len = iov->iov_len };
copy_to_user(iov_enc.iov_base,data,iov->iov_len); ret=ext4_file_write(iocb,&iov_enc,nr_segs,pos); vfree(data); return ret; }
this just changes the data and then calls original function.
is there anything wrong with this function? can anyone help me?
Hi Amir, I'm not quite sure about what's wrong with your function, but here are two suggestions I got from the list when I did similar things: 1. wrapfs 2. ecryptfs I think you should check these two stackable filesystems if you haven't. Hope this can help a little bit! Freeman