diff --git a/sys/dev/netif/ath/ath/if_ath_ioctl.c b/sys/dev/netif/ath/ath/if_ath_ioctl.c --- a/sys/dev/netif/ath/ath/if_ath_ioctl.c +++ b/sys/dev/netif/ath/ath/if_ath_ioctl.c @@ -173,6 +173,7 @@ u_int id = ad->ad_id & ATH_DIAG_ID; void *indata = NULL; void *outdata = NULL; + void *outbuf = NULL; /* tracks kmalloc'd result buffer for reclaim */ u_int32_t insize = ad->ad_in_size; u_int32_t outsize = ad->ad_out_size; int error = 0; @@ -198,11 +199,12 @@ * pointer for us to use below in reclaiming the buffer; * may want to be more defensive. */ - outdata = kmalloc(outsize, M_TEMP, M_NOWAIT); - if (outdata == NULL) { + outbuf = kmalloc(outsize, M_TEMP, M_NOWAIT); + if (outbuf == NULL) { error = ENOMEM; goto bad; } + outdata = outbuf; } @@ -229,8 +231,8 @@ bad: if ((ad->ad_id & ATH_DIAG_IN) && indata != NULL) kfree(indata, M_TEMP); - if ((ad->ad_id & ATH_DIAG_DYN) && outdata != NULL) - kfree(outdata, M_TEMP); + if (outbuf != NULL) + kfree(outbuf, M_TEMP); return error; } #endif /* ATH_DIAGAPI */