struct sctp_ssnmap *sctp_ssnmap_new(__u16 in, __u16 out, int gfp)
{
struct sctp_ssnmap *retval;
+ int order;
- retval = kmalloc(sctp_ssnmap_size(in, out), gfp);
+ order = get_order(sctp_ssnmap_size(in,out));
+ retval = (struct sctp_ssnmap *)__get_free_pages(gfp, order);
if (!retval)
goto fail;
return retval;
fail_map:
- kfree(retval);
+ free_pages((unsigned long)retval, order);
fail:
return NULL;
}
void sctp_ssnmap_free(struct sctp_ssnmap *map)
{
if (map && map->malloced) {
- kfree(map);
+ free_pages((unsigned long)map,
+ get_order(sctp_ssnmap_size(map->in.len,
+ map->out.len)));
SCTP_DBG_OBJCNT_DEC(ssnmap);
}
}