Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1249433 > unrolled thread
| Started by | Sasha Levin <sasha.levin@oracle.com> |
|---|---|
| First post | 2015-10-17 21:30 +0200 |
| Last post | 2015-10-18 06:20 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: fs: out of bounds on stack in iov_iter_advance Sasha Levin <sasha.levin@oracle.com> - 2015-10-17 21:30 +0200
Re: fs: out of bounds on stack in iov_iter_advance Ross Zwisler <ross.zwisler@linux.intel.com> - 2015-10-18 06:20 +0200
| From | Sasha Levin <sasha.levin@oracle.com> |
|---|---|
| Date | 2015-10-17 21:30 +0200 |
| Subject | Re: fs: out of bounds on stack in iov_iter_advance |
| Message-ID | <qkFl0-6VB-13@gated-at.bofh.it> |
On 09/30/2015 05:30 PM, Sasha Levin wrote: > On 09/17/2015 10:24 PM, Sasha Levin wrote: >> On 08/19/2015 01:46 AM, Al Viro wrote: >>>> or mapping->a_ops->direct_IO() returned more >>>>> than 'count'. >>> Was there DAX involved? ->direct_IO() in there is blkdev_direct_IO(), >>> which takes rather different paths in those cases... >>> >> >> So I've traced this all the way back to dax_io(). I can trigger this with: >> >> diff --git a/fs/dax.c b/fs/dax.c >> index 93bf2f9..2cdb8a5 100644 >> --- a/fs/dax.c >> +++ b/fs/dax.c >> @@ -178,6 +178,7 @@ static ssize_t dax_io(struct inode *inode, struct iov_iter *iter, >> if (need_wmb) >> wmb_pmem(); >> >> + WARN_ON((pos == start) && (pos - start > iov_iter_count(iter))); >> return (pos == start) ? retval : pos - start; >> } >> >> So it seems that iter gets moved twice here: once in dax_io(), and once again >> back at generic_file_read_iter(). >> >> I don't see how it ever worked. Am I missing something? > > Ping? Ping? Thanks, Sasha -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Ross Zwisler <ross.zwisler@linux.intel.com> |
|---|---|
| Date | 2015-10-18 06:20 +0200 |
| Message-ID | <qkNBV-2kG-45@gated-at.bofh.it> |
| In reply to | #1249433 |
On Sat, Oct 17, 2015 at 03:22:19PM -0400, Sasha Levin wrote: > On 09/30/2015 05:30 PM, Sasha Levin wrote: > > On 09/17/2015 10:24 PM, Sasha Levin wrote: > >> On 08/19/2015 01:46 AM, Al Viro wrote: > >>>> or mapping->a_ops->direct_IO() returned more > >>>>> than 'count'. > >>> Was there DAX involved? ->direct_IO() in there is blkdev_direct_IO(), > >>> which takes rather different paths in those cases... > >>> > >> > >> So I've traced this all the way back to dax_io(). I can trigger this with: > >> > >> diff --git a/fs/dax.c b/fs/dax.c > >> index 93bf2f9..2cdb8a5 100644 > >> --- a/fs/dax.c > >> +++ b/fs/dax.c > >> @@ -178,6 +178,7 @@ static ssize_t dax_io(struct inode *inode, struct iov_iter *iter, > >> if (need_wmb) > >> wmb_pmem(); > >> > >> + WARN_ON((pos == start) && (pos - start > iov_iter_count(iter))); > >> return (pos == start) ? retval : pos - start; > >> } > >> > >> So it seems that iter gets moved twice here: once in dax_io(), and once again > >> back at generic_file_read_iter(). > >> > >> I don't see how it ever worked. Am I missing something? > > > > Ping? > > Ping? I'll try and find time to look at this issue this week. Sasha, do you have a more targeted reproducer, or is still just the trinity fuzzer? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web