Page MenuHomeFreeBSD

D6562.id.diff
No OneTemporary

D6562.id.diff

Index: head/sys/vm/uma_core.c
===================================================================
--- head/sys/vm/uma_core.c
+++ head/sys/vm/uma_core.c
@@ -2112,16 +2112,10 @@
if (memguard_cmp_zone(zone)) {
item = memguard_alloc(zone->uz_size, flags);
if (item != NULL) {
- /*
- * Avoid conflict with the use-after-free
- * protecting infrastructure from INVARIANTS.
- */
if (zone->uz_init != NULL &&
- zone->uz_init != mtrash_init &&
zone->uz_init(item, zone->uz_size, flags) != 0)
return (NULL);
if (zone->uz_ctor != NULL &&
- zone->uz_ctor != mtrash_ctor &&
zone->uz_ctor(item, zone->uz_size, udata,
flags) != 0) {
zone->uz_fini(item, zone->uz_size);
@@ -2655,9 +2649,9 @@
return;
#ifdef DEBUG_MEMGUARD
if (is_memguard_addr(item)) {
- if (zone->uz_dtor != NULL && zone->uz_dtor != mtrash_dtor)
+ if (zone->uz_dtor != NULL)
zone->uz_dtor(item, zone->uz_size, udata);
- if (zone->uz_fini != NULL && zone->uz_fini != mtrash_fini)
+ if (zone->uz_fini != NULL)
zone->uz_fini(item, zone->uz_size);
memguard_free(item);
return;
Index: head/sys/vm/uma_dbg.c
===================================================================
--- head/sys/vm/uma_dbg.c
+++ head/sys/vm/uma_dbg.c
@@ -33,6 +33,8 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#include "opt_vm.h"
+
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bitset.h>
@@ -49,6 +51,7 @@
#include <vm/uma.h>
#include <vm/uma_int.h>
#include <vm/uma_dbg.h>
+#include <vm/memguard.h>
static const uint32_t uma_junk = 0xdeadc0de;
@@ -57,7 +60,6 @@
* prior to subsequent reallocation.
*
* Complies with standard ctor arg/return
- *
*/
int
trash_ctor(void *mem, int size, void *arg, int flags)
@@ -65,6 +67,11 @@
int cnt;
uint32_t *p;
+#ifdef DEBUG_MEMGUARD
+ if (is_memguard_addr(mem))
+ return (0);
+#endif
+
cnt = size / sizeof(uma_junk);
for (p = mem; cnt > 0; cnt--, p++)
@@ -93,6 +100,11 @@
int cnt;
uint32_t *p;
+#ifdef DEBUG_MEMGUARD
+ if (is_memguard_addr(mem))
+ return;
+#endif
+
cnt = size / sizeof(uma_junk);
for (p = mem; cnt > 0; cnt--, p++)
@@ -131,6 +143,11 @@
uint32_t *p = mem;
int cnt;
+#ifdef DEBUG_MEMGUARD
+ if (is_memguard_addr(mem))
+ return (0);
+#endif
+
size -= sizeof(struct malloc_type *);
ksp = (struct malloc_type **)mem;
ksp += size / sizeof(struct malloc_type *);
@@ -158,6 +175,11 @@
int cnt;
uint32_t *p;
+#ifdef DEBUG_MEMGUARD
+ if (is_memguard_addr(mem))
+ return;
+#endif
+
size -= sizeof(struct malloc_type *);
cnt = size / sizeof(uma_junk);
@@ -176,6 +198,11 @@
{
struct malloc_type **ksp;
+#ifdef DEBUG_MEMGUARD
+ if (is_memguard_addr(mem))
+ return (0);
+#endif
+
mtrash_dtor(mem, size, NULL);
ksp = (struct malloc_type **)mem;

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 9, 5:06 AM (19 h, 34 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29433502
Default Alt Text
D6562.id.diff (2 KB)

Event Timeline