| 827 | |
| 828 | #ifdef MALLOC_DEBUG |
| 829 | static int |
| 830 | free_dbg(void **addrp, struct malloc_type *mtp) |
| 831 | { |
| 832 | void *addr; |
| 833 | |
| 834 | addr = *addrp; |
| 835 | KASSERT(mtp->ks_version == M_VERSION, ("free: bad malloc type version")); |
| 836 | KASSERT(curthread->td_critnest == 0 || SCHEDULER_STOPPED(), |
| 837 | ("free: called with spinlock or critical section held")); |
| 838 | |
| 839 | /* free(NULL, ...) does nothing */ |
| 840 | if (addr == NULL) |
| 841 | return (EJUSTRETURN); |
| 842 | |
| 843 | #ifdef DEBUG_MEMGUARD |
| 844 | if (is_memguard_addr(addr)) { |
| 845 | memguard_free(addr); |
| 846 | return (EJUSTRETURN); |
| 847 | } |
| 848 | #endif |
| 849 | |
| 850 | #ifdef DEBUG_REDZONE |
| 851 | redzone_check(addr); |
| 852 | *addrp = redzone_addr_ntor(addr); |
| 853 | #endif |
| 854 | |
| 855 | return (0); |
| 856 | } |
| 857 | #endif |
| 858 | |
| 859 | /* |
no test coverage detected