void *mmap_priv;
bool init_set;
- void (*init_func)(void *priv, void *addr, size_t len, int cpu);
+ int (*init_func)(void *priv, void *addr, size_t len, int cpu);
void *init_priv;
bool robust_set;
int cpu;
for (cpu = 0; cpu < pool->attr.max_nr_cpus; cpu++) {
- pool->attr.init_func(pool->attr.init_priv,
- base + (pool->attr.stride * cpu),
- pool->attr.stride, cpu);
+ if (pool->attr.init_func(pool->attr.init_priv,
+ base + (pool->attr.stride * cpu),
+ pool->attr.stride, cpu)) {
+ goto error_alloc;
+ }
}
}
return range;
}
int rseq_mempool_attr_set_init(struct rseq_mempool_attr *attr,
- void (*init_func)(void *priv, void *addr, size_t len, int cpu),
+ int (*init_func)(void *priv, void *addr, size_t len, int cpu),
void *init_priv)
{
if (!attr) {