[3/5] fs: f2fs: initialize fsdata in pagecache_write()

Message ID 20221121112134.407362-3-glider@google.com
State New
Headers
Series [1/5] fs: ext4: initialize fsdata in pagecache_write() |

Commit Message

Alexander Potapenko Nov. 21, 2022, 11:21 a.m. UTC
  When aops->write_begin() does not initialize fsdata, KMSAN may report
an error passing the latter to aops->write_end().

Fix this by unconditionally initializing fsdata.

Suggested-by: Eric Biggers <ebiggers@kernel.org>
Fixes: 95ae251fe828 ("f2fs: add fs-verity support")
Signed-off-by: Alexander Potapenko <glider@google.com>
---
 fs/f2fs/verity.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Eric Biggers Nov. 21, 2022, 7:53 p.m. UTC | #1
On Mon, Nov 21, 2022 at 12:21:32PM +0100, Alexander Potapenko wrote:
> When aops->write_begin() does not initialize fsdata, KMSAN may report
> an error passing the latter to aops->write_end().
> 
> Fix this by unconditionally initializing fsdata.
> 
> Suggested-by: Eric Biggers <ebiggers@kernel.org>
> Fixes: 95ae251fe828 ("f2fs: add fs-verity support")
> Signed-off-by: Alexander Potapenko <glider@google.com>
> ---
>  fs/f2fs/verity.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/f2fs/verity.c b/fs/f2fs/verity.c
> index c352fff88a5e6..3f4f3295f1c66 100644
> --- a/fs/f2fs/verity.c
> +++ b/fs/f2fs/verity.c
> @@ -81,7 +81,7 @@ static int pagecache_write(struct inode *inode, const void *buf, size_t count,
>  		size_t n = min_t(size_t, count,
>  				 PAGE_SIZE - offset_in_page(pos));
>  		struct page *page;
> -		void *fsdata;
> +		void *fsdata = NULL;
>  		int res;
>  
>  		res = aops->write_begin(NULL, mapping, pos, n, &page, &fsdata);

Reviewed-by: Eric Biggers <ebiggers@google.com>

- Eric
  
Eric Biggers Jan. 23, 2023, 6:59 a.m. UTC | #2
On Mon, Nov 21, 2022 at 07:53:19PM +0000, Eric Biggers wrote:
> On Mon, Nov 21, 2022 at 12:21:32PM +0100, Alexander Potapenko wrote:
> > When aops->write_begin() does not initialize fsdata, KMSAN may report
> > an error passing the latter to aops->write_end().
> > 
> > Fix this by unconditionally initializing fsdata.
> > 
> > Suggested-by: Eric Biggers <ebiggers@kernel.org>
> > Fixes: 95ae251fe828 ("f2fs: add fs-verity support")
> > Signed-off-by: Alexander Potapenko <glider@google.com>
> > ---
> >  fs/f2fs/verity.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/fs/f2fs/verity.c b/fs/f2fs/verity.c
> > index c352fff88a5e6..3f4f3295f1c66 100644
> > --- a/fs/f2fs/verity.c
> > +++ b/fs/f2fs/verity.c
> > @@ -81,7 +81,7 @@ static int pagecache_write(struct inode *inode, const void *buf, size_t count,
> >  		size_t n = min_t(size_t, count,
> >  				 PAGE_SIZE - offset_in_page(pos));
> >  		struct page *page;
> > -		void *fsdata;
> > +		void *fsdata = NULL;
> >  		int res;
> >  
> >  		res = aops->write_begin(NULL, mapping, pos, n, &page, &fsdata);
> 
> Reviewed-by: Eric Biggers <ebiggers@google.com>
> 

Jaegeuk, can you please apply this patch?

- Eric
  
Jaegeuk Kim Jan. 26, 2023, 9:09 p.m. UTC | #3
On 01/22, Eric Biggers wrote:
> On Mon, Nov 21, 2022 at 07:53:19PM +0000, Eric Biggers wrote:
> > On Mon, Nov 21, 2022 at 12:21:32PM +0100, Alexander Potapenko wrote:
> > > When aops->write_begin() does not initialize fsdata, KMSAN may report
> > > an error passing the latter to aops->write_end().
> > > 
> > > Fix this by unconditionally initializing fsdata.
> > > 
> > > Suggested-by: Eric Biggers <ebiggers@kernel.org>
> > > Fixes: 95ae251fe828 ("f2fs: add fs-verity support")
> > > Signed-off-by: Alexander Potapenko <glider@google.com>
> > > ---
> > >  fs/f2fs/verity.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/fs/f2fs/verity.c b/fs/f2fs/verity.c
> > > index c352fff88a5e6..3f4f3295f1c66 100644
> > > --- a/fs/f2fs/verity.c
> > > +++ b/fs/f2fs/verity.c
> > > @@ -81,7 +81,7 @@ static int pagecache_write(struct inode *inode, const void *buf, size_t count,
> > >  		size_t n = min_t(size_t, count,
> > >  				 PAGE_SIZE - offset_in_page(pos));
> > >  		struct page *page;
> > > -		void *fsdata;
> > > +		void *fsdata = NULL;
> > >  		int res;
> > >  
> > >  		res = aops->write_begin(NULL, mapping, pos, n, &page, &fsdata);
> > 
> > Reviewed-by: Eric Biggers <ebiggers@google.com>
> > 
> 
> Jaegeuk, can you please apply this patch?

Yup, applied.

> 
> - Eric
  

Patch

diff --git a/fs/f2fs/verity.c b/fs/f2fs/verity.c
index c352fff88a5e6..3f4f3295f1c66 100644
--- a/fs/f2fs/verity.c
+++ b/fs/f2fs/verity.c
@@ -81,7 +81,7 @@  static int pagecache_write(struct inode *inode, const void *buf, size_t count,
 		size_t n = min_t(size_t, count,
 				 PAGE_SIZE - offset_in_page(pos));
 		struct page *page;
-		void *fsdata;
+		void *fsdata = NULL;
 		int res;
 
 		res = aops->write_begin(NULL, mapping, pos, n, &page, &fsdata);