Fix the last two CFI callback prototype mismatches
There was the series from me a year ago which fixed most of the callback vs implementation prototype mismatches. It was based on running the CFI-enabled kernel (in permissive mode -- warning instead of panic) and performing a full ZTS cycle, and then fixing all of the problems caught by CFI. Now, Clang 16-dev has new warning flag, -Wcast-function-type-strict, which detect such mismatches at compile-time. It allows to find the remaining issues missed by the first series. There are only two of them left: one for the secpolicy_vnode_setattr() callback and one for taskq_dispatch(). The fix is easy, since they are not used anywhere else. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Alexander Lobakin <alobakin@pm.me> Closes #14207
This commit is contained in:
parent
587a39b729
commit
b5459dd354
|
@ -219,7 +219,7 @@ extern int zfs_zaccess(struct znode *, int, int, boolean_t, cred_t *,
|
||||||
zuserns_t *);
|
zuserns_t *);
|
||||||
int zfs_fastaccesschk_execute(struct znode *, cred_t *);
|
int zfs_fastaccesschk_execute(struct znode *, cred_t *);
|
||||||
extern int zfs_zaccess_rwx(struct znode *, mode_t, int, cred_t *, zuserns_t *);
|
extern int zfs_zaccess_rwx(struct znode *, mode_t, int, cred_t *, zuserns_t *);
|
||||||
extern int zfs_zaccess_unix(struct znode *, mode_t, cred_t *);
|
extern int zfs_zaccess_unix(void *, int, cred_t *);
|
||||||
extern int zfs_acl_access(struct znode *, int, cred_t *);
|
extern int zfs_acl_access(struct znode *, int, cred_t *);
|
||||||
int zfs_acl_chmod_setattr(struct znode *, zfs_acl_t **, uint64_t);
|
int zfs_acl_chmod_setattr(struct znode *, zfs_acl_t **, uint64_t);
|
||||||
int zfs_zaccess_delete(struct znode *, struct znode *, cred_t *, zuserns_t *);
|
int zfs_zaccess_delete(struct znode *, struct znode *, cred_t *, zuserns_t *);
|
||||||
|
|
|
@ -2483,7 +2483,7 @@ zfs_zaccess_rwx(znode_t *zp, mode_t mode, int flags, cred_t *cr,
|
||||||
* Access function for secpolicy_vnode_setattr
|
* Access function for secpolicy_vnode_setattr
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
zfs_zaccess_unix(znode_t *zp, mode_t mode, cred_t *cr)
|
zfs_zaccess_unix(void *zp, int mode, cred_t *cr)
|
||||||
{
|
{
|
||||||
int v4_mode = zfs_unix_to_v4(mode >> 6);
|
int v4_mode = zfs_unix_to_v4(mode >> 6);
|
||||||
|
|
||||||
|
|
|
@ -2788,7 +2788,7 @@ zfs_zaccess_rwx(znode_t *zp, mode_t mode, int flags, cred_t *cr,
|
||||||
* Access function for secpolicy_vnode_setattr
|
* Access function for secpolicy_vnode_setattr
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
zfs_zaccess_unix(znode_t *zp, mode_t mode, cred_t *cr)
|
zfs_zaccess_unix(void *zp, int mode, cred_t *cr)
|
||||||
{
|
{
|
||||||
int v4_mode = zfs_unix_to_v4(mode >> 6);
|
int v4_mode = zfs_unix_to_v4(mode >> 6);
|
||||||
|
|
||||||
|
|
|
@ -2186,7 +2186,7 @@ top:
|
||||||
vap->va_mask &= ~trim_mask;
|
vap->va_mask &= ~trim_mask;
|
||||||
}
|
}
|
||||||
err = secpolicy_vnode_setattr(cr, ip, vap, &oldva, flags,
|
err = secpolicy_vnode_setattr(cr, ip, vap, &oldva, flags,
|
||||||
(int (*)(void *, int, cred_t *))zfs_zaccess_unix, zp);
|
zfs_zaccess_unix, zp);
|
||||||
if (err)
|
if (err)
|
||||||
goto out3;
|
goto out3;
|
||||||
|
|
||||||
|
|
|
@ -429,7 +429,7 @@ txg_quiesce(dsl_pool_t *dp, uint64_t txg)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
txg_do_callbacks(list_t *cb_list)
|
txg_do_callbacks(void *cb_list)
|
||||||
{
|
{
|
||||||
dmu_tx_do_callbacks(cb_list, 0);
|
dmu_tx_do_callbacks(cb_list, 0);
|
||||||
|
|
||||||
|
@ -479,7 +479,7 @@ txg_dispatch_callbacks(dsl_pool_t *dp, uint64_t txg)
|
||||||
|
|
||||||
list_move_tail(cb_list, &tc->tc_callbacks[g]);
|
list_move_tail(cb_list, &tc->tc_callbacks[g]);
|
||||||
|
|
||||||
(void) taskq_dispatch(tx->tx_commit_cb_taskq, (task_func_t *)
|
(void) taskq_dispatch(tx->tx_commit_cb_taskq,
|
||||||
txg_do_callbacks, cb_list, TQ_SLEEP);
|
txg_do_callbacks, cb_list, TQ_SLEEP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue