AFS fixes
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEqG5UsNXhtOCrfGQP+7dXa6fLC2sFAl1ekN4ACgkQ+7dXa6fL C2v5YA//WpHrecLwBiBfd4UE1QndDVC7bC1aVvmUsPYsMNTnc1wqD7zwPSVAkXt9 u7WVa0XsOK4Ks9PpNwwmtlFk2nSXvFbb1WsPiyUX/QWC+tB0jdHEvkymEonVPn85 UuNMcCx2Yzv7Mxw9aESWDziEN5PzsOChZC1M8fpVuEBDcqqbkkdSTM1LPzfHkRn5 4/OFnlaC/4D4qEfv+0gFZjf6zBEPicHRfgSWYgzyBxsEwZ5eGzTcpVSYPEJRsuYF Ndqp0ei/65wUihk2gyoNG5PkC/9oouQV9ko17QG1uhiqrFpECiAkbyf8YmkUTDSc WvNtKN3HnLKJhCPoJ1SpE1qFs0Iw10y2BySO2XLoj7N7421aSIU+nemQ9yZ1mQgc GGwpBx1jIPMsN0IDXG8HIJCW3aUNU+Ygg2X7gvpF2gOvB29LVPN48/6kahpeQpAR vzLRUod9+H4wD3kLqpOjDOCPmokZNktn+8rtqlctyCvwp41JBbmQ9/r68aoFhpe9 fFN4zhd3E365tgX63ooUQVa4thc09ltcYTAAhEz1Ma8kRsigwZ6pY5xSrpZ0dehW 4SEykEsqQDlSmFV0G/063F66M621o69VvETe8lhOsVVK3XVWzGkDdIXS1iGlFrNx A/hXcr2rwau5qomo00blyPyeh2DcQhsAPI3SJyq7JL2bK4JEQD4= =1/ML -----END PGP SIGNATURE----- Merge tag 'afs-fixes-20190822' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs Pull AFS fixes from David Howells: - Fix a cell record leak due to the default error not being cleared. - Fix an oops in tracepoint due to a pointer that may contain an error. - Fix the ACL storage op for YFS where the wrong op definition is being used. By luck, this only actually affects the information appearing in traces. * tag 'afs-fixes-20190822' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs: afs: use correct afs_call_type in yfs_fs_store_opaque_acl2 afs: Fix possible oops in afs_lookup trace event afs: Fix leak in afs_lookup_cell_rcu()
This commit is contained in:
Коммит
e8c3fa9f4d
|
@ -74,6 +74,7 @@ struct afs_cell *afs_lookup_cell_rcu(struct afs_net *net,
|
|||
cell = rcu_dereference_raw(net->ws_cell);
|
||||
if (cell) {
|
||||
afs_get_cell(cell);
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
ret = -EDESTADDRREQ;
|
||||
|
@ -108,6 +109,9 @@ struct afs_cell *afs_lookup_cell_rcu(struct afs_net *net,
|
|||
|
||||
done_seqretry(&net->cells_lock, seq);
|
||||
|
||||
if (ret != 0 && cell)
|
||||
afs_put_cell(net, cell);
|
||||
|
||||
return ret == 0 ? cell : ERR_PTR(ret);
|
||||
}
|
||||
|
||||
|
|
|
@ -959,7 +959,8 @@ static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry,
|
|||
inode ? AFS_FS_I(inode) : NULL);
|
||||
} else {
|
||||
trace_afs_lookup(dvnode, &dentry->d_name,
|
||||
inode ? AFS_FS_I(inode) : NULL);
|
||||
IS_ERR_OR_NULL(inode) ? NULL
|
||||
: AFS_FS_I(inode));
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
|
|
@ -2171,7 +2171,7 @@ int yfs_fs_store_opaque_acl2(struct afs_fs_cursor *fc, const struct afs_acl *acl
|
|||
key_serial(fc->key), vnode->fid.vid, vnode->fid.vnode);
|
||||
|
||||
size = round_up(acl->size, 4);
|
||||
call = afs_alloc_flat_call(net, &yfs_RXYFSStoreStatus,
|
||||
call = afs_alloc_flat_call(net, &yfs_RXYFSStoreOpaqueACL2,
|
||||
sizeof(__be32) * 2 +
|
||||
sizeof(struct yfs_xdr_YFSFid) +
|
||||
sizeof(__be32) + size,
|
||||
|
|
Загрузка…
Ссылка в новой задаче