Skip to content
  • David Howells's avatar
    f4c79144
    afs: Fix incorrect freeing of the ACL passed to the YFS ACL store op · f4c79144
    David Howells authored
    
    
    The cleanup for the yfs_store_opaque_acl2_operation calls the wrong
    function to destroy the ACL content buffer.  It's an afs_acl struct, not
    a yfs_acl struct - and the free function for latter may pass invalid
    pointers to kfree().
    
    Fix this by using the afs_acl_put() function.  The yfs_acl_put()
    function is then no longer used and can be removed.
    
    	general protection fault, probably for non-canonical address 0x7ebde00000000: 0000 [#1] SMP PTI
    	...
    	RIP: 0010:compound_head+0x0/0x11
    	...
    	Call Trace:
    	 virt_to_cache+0x8/0x51
    	 kfree+0x5d/0x79
    	 yfs_free_opaque_acl+0x16/0x29
    	 afs_put_operation+0x60/0x114
    	 __vfs_setxattr+0x67/0x72
    	 __vfs_setxattr_noperm+0x66/0xe9
    	 vfs_setxattr+0x67/0xce
    	 setxattr+0x14e/0x184
    	 __do_sys_fsetxattr+0x66/0x8f
    	 do_syscall_64+0x2d/0x3a
    	 entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: e49c7b2f ("afs: Build an abstraction around an "operation" concept")
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f4c79144
    afs: Fix incorrect freeing of the ACL passed to the YFS ACL store op
    David Howells authored
    
    
    The cleanup for the yfs_store_opaque_acl2_operation calls the wrong
    function to destroy the ACL content buffer.  It's an afs_acl struct, not
    a yfs_acl struct - and the free function for latter may pass invalid
    pointers to kfree().
    
    Fix this by using the afs_acl_put() function.  The yfs_acl_put()
    function is then no longer used and can be removed.
    
    	general protection fault, probably for non-canonical address 0x7ebde00000000: 0000 [#1] SMP PTI
    	...
    	RIP: 0010:compound_head+0x0/0x11
    	...
    	Call Trace:
    	 virt_to_cache+0x8/0x51
    	 kfree+0x5d/0x79
    	 yfs_free_opaque_acl+0x16/0x29
    	 afs_put_operation+0x60/0x114
    	 __vfs_setxattr+0x67/0x72
    	 __vfs_setxattr_noperm+0x66/0xe9
    	 vfs_setxattr+0x67/0xce
    	 setxattr+0x14e/0x184
    	 __do_sys_fsetxattr+0x66/0x8f
    	 do_syscall_64+0x2d/0x3a
    	 entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: e49c7b2f ("afs: Build an abstraction around an "operation" concept")
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Loading