diff options
author | Kip Macy <kmacy@FreeBSD.org> | 2008-09-25 06:46:28 +0000 |
---|---|---|
committer | Kip Macy <kmacy@FreeBSD.org> | 2008-09-25 06:46:28 +0000 |
commit | 82c2cf3b056cf6e8272f0881fd4ac0d25ce38d01 (patch) | |
tree | 055bc2dae42e8db7b4cb11c26c6654115ccfacb4 | |
parent | c75c2a68a7d5c41f073745a43094363533ca5ea8 (diff) | |
download | src-82c2cf3b056cf6e8272f0881fd4ac0d25ce38d01.tar.gz src-82c2cf3b056cf6e8272f0881fd4ac0d25ce38d01.zip |
fix insta-panic:
- determine which ext_arg offsets to use based on the version number
Submitted by: Chelsio Inc.
MFC after: 1 day
Notes
Notes:
svn path=/head/; revision=183339
-rw-r--r-- | sys/dev/cxgb/sys/mvec.h | 4 | ||||
-rw-r--r-- | sys/dev/cxgb/sys/uipc_mvec.c | 5 |
2 files changed, 9 insertions, 0 deletions
diff --git a/sys/dev/cxgb/sys/mvec.h b/sys/dev/cxgb/sys/mvec.h index 09dbf129b270..855c03987587 100644 --- a/sys/dev/cxgb/sys/mvec.h +++ b/sys/dev/cxgb/sys/mvec.h @@ -62,8 +62,12 @@ struct m_ext_ { caddr_t ext_buf; /* start of buffer */ void (*ext_free) /* free routine if not the usual */ (void *, void *); +#if __FreeBSD_version >= 800016 void *ext_arg1; /* optional argument pointer */ void *ext_arg2; /* optional argument pointer */ +#else + void *ext_args; /* optional argument pointer */ +#endif u_int ext_size; /* size of buffer, for ext_free */ volatile u_int *ref_cnt; /* pointer to ref count info */ int ext_type; /* type of external storage */ diff --git a/sys/dev/cxgb/sys/uipc_mvec.c b/sys/dev/cxgb/sys/uipc_mvec.c index cf0de13f091e..1293e22b1e48 100644 --- a/sys/dev/cxgb/sys/uipc_mvec.c +++ b/sys/dev/cxgb/sys/uipc_mvec.c @@ -405,8 +405,13 @@ mb_free_ext_fast(struct mbuf_iovec *mi, int type, int idx) case EXT_EXTREF: KASSERT(mi->mi_ext.ext_free != NULL, ("%s: ext_free not set", __func__)); +#if __FreeBSD_version >= 800016 (*(mi->mi_ext.ext_free))(mi->mi_ext.ext_arg1, mi->mi_ext.ext_arg2); +#else + (*(mi->mi_ext.ext_free))(mi->mi_ext.ext_buf, + mi->mi_ext.ext_args); +#endif break; default: dump_mi(mi); |