Searched hist:"5611 ef28" (Results 1 – 1 of 1) sorted by relevance
/openbmc/linux/fs/afs/ |
H A D | write.c | 5611ef28 Thu Mar 16 11:27:43 CDT 2017 David Howells <dhowells@redhat.com> afs: Fix page overput in afs_fill_page()
afs_fill_page() loads the page it wants to fill into the afs_read request without incrementing its refcount - but then calls afs_put_read() to clean up afterwards, which then releases a ref on the page.
Fix this by getting a ref on the page before calling afs_vnode_fetch_data().
This causes sync after a write to hang in afs_writepages_region() because find_get_pages_tag() gets confused and doesn't return.
Fixes: 196ee9cd2d04 ("afs: Make afs_fs_fetch_data() take a list of pages") Reported-by: Marc Dionne <marc.dionne@auristor.com> Signed-off-by: David Howells <dhowells@redhat.com> Tested-by: Marc Dionne <marc.dionne@auristor.com> 5611ef28 Thu Mar 16 11:27:43 CDT 2017 David Howells <dhowells@redhat.com> afs: Fix page overput in afs_fill_page() afs_fill_page() loads the page it wants to fill into the afs_read request without incrementing its refcount - but then calls afs_put_read() to clean up afterwards, which then releases a ref on the page. Fix this by getting a ref on the page before calling afs_vnode_fetch_data(). This causes sync after a write to hang in afs_writepages_region() because find_get_pages_tag() gets confused and doesn't return. Fixes: 196ee9cd2d04 ("afs: Make afs_fs_fetch_data() take a list of pages") Reported-by: Marc Dionne <marc.dionne@auristor.com> Signed-off-by: David Howells <dhowells@redhat.com> Tested-by: Marc Dionne <marc.dionne@auristor.com>
|