int xt_compat_init_offsets(u8 af, unsigned int number)
{
	size_t mem;

	WARN_ON(!mutex_is_locked(&xt[af].compat_mutex));

	if (!number || number > (INT_MAX / sizeof(struct compat_delta)))
		return -EINVAL;

	if (WARN_ON(xt[af].compat_tab))
		return -EINVAL;

	mem = sizeof(struct compat_delta) * number;
	if (mem > XT_MAX_TABLE_SIZE)
		return -ENOMEM;

	xt[af].compat_tab = vmalloc(mem);
	if (!xt[af].compat_tab)
		return -ENOMEM;

	xt[af].number = number;
	xt[af].cur = 0;

	return 0;
}
int xt_compat_init_offsets(u8 af, unsigned int number)
{
	size_t mem;

	WARN_ON(!mutex_is_locked(&xt[af].compat_mutex));

	if (!number || number > (INT_MAX / sizeof(struct compat_delta)))
		return -EINVAL;

	if (WARN_ON(xt[af].compat_tab))
		return -EINVAL;

	mem = sizeof(struct compat_delta) * number;
	if (mem > XT_MAX_TABLE_SIZE)
		return -ENOMEM;

	xt[af].compat_tab = vmalloc(mem);
	if (!xt[af].compat_tab)
		return -ENOMEM;

	xt[af].number = number;
	xt[af].cur = 0;

	return 0;
}