2009/10/01 3:37, Greg Freemyer wrote:: > 2009/9/30 Kazuya Mio <k-mio@xxxxxxxxxxxxx>: >> If non-privileged user does e4defrag, e4defrag returns 1 despite >> its success. This patch fixes this problem. >> >> Signed-off-by: Kazuya Mio <k-mio@xxxxxxxxxxxxx> >> --- >> >> e4defrag.c | 1 + >> 1 file changed, 1 insertion(+) >> diff --git a/misc/e4defrag.c b/misc/e4defrag.c >> index 94f8529..98dda92 100644 >> --- a/misc/e4defrag.c >> +++ b/misc/e4defrag.c >> @@ -2025,6 +2025,7 @@ int main(int argc, char *argv[]) >> if (!(mode_flag & DETAIL) && >> current_uid != ROOT_UID) { >> printf(" Done.\n"); >> + success_flag = 1; >> continue; >> } > > I should know this, but this patch made me wonder about the underlying > implementation of EXT4_IOC_MOVE_EXT. > > After EXT4_IOC_MOVE_EXT is called, can userspace somehow modify the > defragged file? > > ie. If I only have readonly access to a file and I call > EXT4_IOC_MOVE_EXT to replace some of the data blocks, is it possible > now for me to write data to the donor_fd and thus modify the data in > the original file? > > Greg Nope, EXT4_IOC_MOVE_EXT only changes original file blocks but its file data isn't changed. If user has readonly access to original or donor file and is both two files owner, EXT4_IOC_MOVE_EXT succeeds. This means that the ioctl replaces data blocks and writes original file data into replaced blocks. Regards, Kazuya Mio -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html