From 42cb98c6ae92e1f46105d055d24ea249af44bf3f Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Wed, 16 Oct 2013 10:58:53 +0200 Subject: fs: ignore O_TRUNC open flag for devices The O_TRUNC flag has to be ignored when opening devices. Otherwise cp /somefile /dev/somedev fails. This is broken since: | commit d4f5bb1e011ac653a167031554f0ac9e028e9e36 | Author: Sascha Hauer | Date: Sat Sep 28 13:12:50 2013 +0200 | | copy_file: Add missing O_TRUNC | | Without it, when copying a smaller file over a larger file the | resulting file still has the remaining space from the larger file. | | Signed-off-by: Sascha Hauer Signed-off-by: Sascha Hauer --- fs/fs.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'fs') diff --git a/fs/fs.c b/fs/fs.c index ce7b425546..7d558e90d0 100644 --- a/fs/fs.c +++ b/fs/fs.c @@ -722,8 +722,7 @@ int open(const char *pathname, int flags, ...) if (ret) goto out; - - if (flags & O_TRUNC) { + if (!(s.st_mode & S_IFCHR) && (flags & O_TRUNC)) { ret = fsdrv->truncate(&fsdev->dev, f, 0); f->size = 0; if (ret) -- cgit v1.2.3