aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKip Macy <kmacy@FreeBSD.org>2008-09-25 06:46:28 +0000
committerKip Macy <kmacy@FreeBSD.org>2008-09-25 06:46:28 +0000
commit82c2cf3b056cf6e8272f0881fd4ac0d25ce38d01 (patch)
tree055bc2dae42e8db7b4cb11c26c6654115ccfacb4
parentc75c2a68a7d5c41f073745a43094363533ca5ea8 (diff)
downloadsrc-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.h4
-rw-r--r--sys/dev/cxgb/sys/uipc_mvec.c5
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);