|
Description
|
The fix for 6556447 changed KSSL_ENQUEUE_MP() via:
#define KSSL_ENQUEUE_MP(ssl, mp) \
DTRACE_PROBE1(kssl__i__enqueue_mp, mblk_t *, mp); \
if ((ssl)->rec_ass_tail == NULL) { \
(ssl)->rec_ass_head = (mp); \
(ssl)->rec_ass_tail = (mp); \
} else { \
(ssl)->rec_ass_tail->b_cont = (mp); \
(ssl)->rec_ass_tail = (mp); \
}
I.e. it inserted the DTRACE_PROBE1() call.
That makes the macro unsafe to use in situations like:
if (condition)
KSSL_ENQUEUE_MP(ssl, mp);
because of missing '{}' around the whole block - only the DTRACE_PROBE1() would be executed under the if(), the main part of the macro were outside.
A previous example where such a sourcechange lead to panics is 6647517.
|