Message ID | 1441617607-25676-1-git-send-email-gary.bisson@boundarydevices.com |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
Hi Gary, On 7 September 2015 at 03:20, Gary Bisson <gary.bisson@boundarydevices.com> wrote: > Since last API changes for files >2GB, the read of symlink is broken as > ext4fs_read_file now returns 0 instead of the length of the actual read. > > Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com> > --- > Hi all, > > Switching from an old v2014.07 to v2015.07 we've noticed that we couldn't > read symlinks any more. This is due to the API changes made to > ext4fs_read_file (commit 9f12cd0). > > This patch makes the read symlink check both for errors (status < 0) and > actual read length. > > Regards, > Gary Thanks for fixing this. Does the filesystem test (test/fs-test.sh) show this error? How could we enhance the test to detect this? > --- > fs/ext4/ext4_common.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c > index cab5465..e2ab145 100644 > --- a/fs/ext4/ext4_common.c > +++ b/fs/ext4/ext4_common.c > @@ -2040,7 +2040,7 @@ static char *ext4fs_read_symlink(struct ext2fs_node *node) > status = ext4fs_read_file(diro, 0, > __le32_to_cpu(diro->inode.size), > symlink, &actread); > - if (status == 0) { > + if ((status < 0) || (actread == 0)) { > free(symlink); > return 0; > } > -- > 2.5.1 > Regards, Simon
Hi Simon, On Tue, Sep 8, 2015 at 5:56 AM, Simon Glass <sjg@chromium.org> wrote: > Hi Gary, > > On 7 September 2015 at 03:20, Gary Bisson > <gary.bisson@boundarydevices.com> wrote: >> Since last API changes for files >2GB, the read of symlink is broken as >> ext4fs_read_file now returns 0 instead of the length of the actual read. >> >> Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com> >> --- >> Hi all, >> >> Switching from an old v2014.07 to v2015.07 we've noticed that we couldn't >> read symlinks any more. This is due to the API changes made to >> ext4fs_read_file (commit 9f12cd0). >> >> This patch makes the read symlink check both for errors (status < 0) and >> actual read length. >> >> Regards, >> Gary > > Thanks for fixing this. Does the filesystem test (test/fs-test.sh) > show this error? How could we enhance the test to detect this? I wasn't aware of this testing script, a quick look at it makes me think it doesn't check anything symlink-related. I guess it would require to add SYMLINK_FILE that points to either SMALL_FILE or BIG_FILE, read it and check the md5sum. Regards, Gary
Hi Gary, On Tuesday, 8 September 2015, Gary Bisson <gary.bisson@boundarydevices.com> wrote: > > Hi Simon, > > On Tue, Sep 8, 2015 at 5:56 AM, Simon Glass <sjg@chromium.org> wrote: > > Hi Gary, > > > > On 7 September 2015 at 03:20, Gary Bisson > > <gary.bisson@boundarydevices.com> wrote: > >> Since last API changes for files >2GB, the read of symlink is broken as > >> ext4fs_read_file now returns 0 instead of the length of the actual read. > >> > >> Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com> > >> --- > >> Hi all, > >> > >> Switching from an old v2014.07 to v2015.07 we've noticed that we couldn't > >> read symlinks any more. This is due to the API changes made to > >> ext4fs_read_file (commit 9f12cd0). > >> > >> This patch makes the read symlink check both for errors (status < 0) and > >> actual read length. > >> > >> Regards, > >> Gary > > > > Thanks for fixing this. Does the filesystem test (test/fs-test.sh) > > show this error? How could we enhance the test to detect this? > > I wasn't aware of this testing script, a quick look at it makes me > think it doesn't check anything symlink-related. I guess it would > require to add SYMLINK_FILE that points to either SMALL_FILE or > BIG_FILE, read it and check the md5sum. Yes I think that will work. Are you going to take a look? Regards, Simon > >
On Mon, Sep 07, 2015 at 11:20:07AM +0200, Gary Bisson wrote: > Since last API changes for files >2GB, the read of symlink is broken as > ext4fs_read_file now returns 0 instead of the length of the actual read. > > Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com> Applied to u-boot/master, thanks!
diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c index cab5465..e2ab145 100644 --- a/fs/ext4/ext4_common.c +++ b/fs/ext4/ext4_common.c @@ -2040,7 +2040,7 @@ static char *ext4fs_read_symlink(struct ext2fs_node *node) status = ext4fs_read_file(diro, 0, __le32_to_cpu(diro->inode.size), symlink, &actread); - if (status == 0) { + if ((status < 0) || (actread == 0)) { free(symlink); return 0; }
Since last API changes for files >2GB, the read of symlink is broken as ext4fs_read_file now returns 0 instead of the length of the actual read. Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com> --- Hi all, Switching from an old v2014.07 to v2015.07 we've noticed that we couldn't read symlinks any more. This is due to the API changes made to ext4fs_read_file (commit 9f12cd0). This patch makes the read symlink check both for errors (status < 0) and actual read length. Regards, Gary --- fs/ext4/ext4_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)