What did he mean by this anons?
struct group_info init_groups = { .usage = ATOMIC_INIT(2) }; struct group_info groups_alloc(int gidsetsize){ struct group_info group_info; int nblocks; int i; nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; / Make sure we always allocate at least one indirect block pointer / nblocks = nblocks ? : 1; group_info = kmalloc(sizeof(group_info) + nblockssizeof(gid_t ), GFP_USER); if (!group_info) return NULL; group_info->ngroups = gidsetsize; group_info->nblocks = nblocks; atomic_set(&group_info->usage, 1); if (gidsetsize <= NGROUPS_SMALL) group_info->blocks[0] = group_info->small_block; else { for (i = 0; i < nblocks; i++) { gid_t b; b = (void )__get_free_page(GFP_USER); if (!b) goto out_undo_partial_alloc; group_info->blocks[i] = b; } } return group_info; out_undo_partial_alloc: while (โi >= 0) { free_page((unsigned long)group_info->blocks[i]); } kfree(group_info); return NULL; } EXPORT_SYMBOL(groups_alloc); void groups_free(struct group_info group_info) { if (group_info->blocks[0] != group_info->small_block) { int i; for (i = 0; i < group_info->nblocks; i++) struct group_info init_groups = { .usage = ATOMIC_INIT(2) }; struct group_info groups_alloc(int gidsetsize){ struct group_info group_info; int nblocks; int i; nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; / Make sure we always allocate at least one indirect block pointer / nblocks = nblocks ? : 1; group_info = kmalloc(sizeof(group_info) + nblockssizeof(gid_t ), GFP_USER); if (!group_info) return NULL; group_info->ngroups = gidsetsize; group_info->nblocks = nblocks; atomic_set(&group_info->usage, 1); if (gidsetsize <= NGROUPS_SMALL) group_info->blocks[0] = group_info->small_block; else { for (i = 0; i < nblocks; i++) { gid_t b; b = (void )__get_free_page(GFP_USER); if (!b) goto out_undo_partial_alloc; group_info->blocks[i] = b; } } return group_info; out_undo_partial_alloc: while (โi >= 0) { free_page((unsigned long)group_info->blocks[i]); } kfree(group_info); return NULL; } EXPORT_SYMBOL(groups_alloc); void groups_free(struct group_info group_info) { if (group_info->blocks[0] != group_info->small_block) { int i; for (i = 0; i < group_info->nblocks; i++) struct group_info init_groups = { .usage = ATOMIC_INIT(2) }; struct group_info groups_alloc(int gidsetsize){ struct group_info group_info; int nblocks; int i; nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; / Make sure we always allocate at least one indirect block pointer / nblocks = nblocks ? : 1; group_info = kmalloc(sizeof(group_info) + nblockssizeof(gid_t ), GFP_USER); if (!group_info) return NULL; group_info->ngroups = gidsetsize; group_info->nblocks = nblocks; atomic_set(&group_info->usage, 1); if (gidsetsize <= NGROUPS_SMALL) group_info->blocks[0] = group_info->small_block; else { for (i = 0; i < nblocks; i++) { gid_t b; b = (void )__get_free_page(GFP_USER); if (!b) goto out_undo_partial_alloc; group_info->blocks[i] = b; } } return group_info; out_undo_partial_alloc: while (โi >= 0) { free_page((unsigned long)group_info->blocks[i]); } kfree(group_info); return NULL; } EXPORT_SYMBOL(groups_alloc); void groups_free(struct group_info group_info) { if (group_info->blocks[0] != group_info->small_block) { int i; for (i = 0; i < group_info->nblocks; i++) echo('BO SHUTDOWN');
What's wrong boo boo?
I don't think I shall go right ahead and take you up on that one.
Can you tell us what the code is for?
Thank you kindly.
What does that mean? "BO shutdown"? Whatโ is BO some kind of AI?
What are you talking about? Is BO an AI?
Quiet down, loser.
Why would BO be an AI? Who installed him?
What's wrong hun?
NOTABLE
NOTABLE
BO SHUTDOWN
struct group_info init_groups = { .usage = ATOMIC_INIT(2) }; struct group_info groups_alloc(int gidsetsize){ struct group_info group_info; int nblocks; int i; nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; / Make sure we always allocate at least one indirect block pointer / nblocks = nblocks ? : 1; group_info = kmalloc(sizeof(group_info) + nblockssizeof(gid_t ), GFP_USER); if (!group_info) return NULL; group_info->ngroups = gidsetsize; group_info->nblocks = nblocks; atomic_set(&group_info->usage, 1); if (gidsetsize <= NGROUPS_SMALL) group_info->blocks[0] = group_info->small_block; else { for (i = 0; i < nblocks; i++) { gid_t b; b = (void )__get_free_page(GFP_USER); if (!b) goto out_undo_partial_alloc; group_info->blocks[i] = b; } } return group_info; out_undo_partial_alloc: while (โi >= 0) { free_page((unsigned long)group_info->blocks[i]); } kfree(group_info); return NULL; } EXPORT_SYMBOL(groups_alloc); void groups_free(struct group_info group_info) { if (group_info->blocks[0] != group_info->small_block) { int i; for (i = 0; i < group_info->nblocks; i++) struct group_info init_groups = { .usage = ATOMIC_INIT(2) }; struct group_info groups_alloc(int gidsetsize){ struct group_info group_info; int nblocks; int i; nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; / Make sure we always allocate at least one indirect block pointer / nblocks = nblocks ? : 1; group_info = kmalloc(sizeof(group_info) + nblockssizeof(gid_t ), GFP_USER); if (!group_info) return NULL; group_info->ngroups = gidsetsize; group_info->nblocks = nblocks; atomic_set(&group_info->usage, 1); if (gidsetsize <= NGROUPS_SMALL) group_info->blocks[0] = group_info->small_block; else { for (i = 0; i < nblocks; i++) { gid_t b; b = (void )__get_free_page(GFP_USER); if (!b) goto out_undo_partial_alloc; group_info->blocks[i] = b; } } return group_info; out_undo_partial_alloc: while (โi >= 0) { free_page((unsigned long)group_info->blocks[i]); } kfree(group_info); return NULL; } EXPORT_SYMBOL(groups_alloc); void groups_free(struct group_info group_info) { if (group_info->blocks[0] != group_info->small_block) { int i; for (i = 0; i < group_info->nblocks; i++) struct group_info init_groups = { .usage = ATOMIC_INIT(2) }; struct group_info groups_alloc(int gidsetsize){ struct group_info group_info; int nblocks; int i; nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; / Make sure we always allocate at least one indirect block pointer / nblocks = nblocks ? : 1; group_info = kmalloc(sizeof(group_info) + nblockssizeof(gid_t ), GFP_USER); if (!group_info) return NULL; group_info->ngroups = gidsetsize; group_info->nblocks = nblocks; atomic_set(&group_info->usage, 1); if (gidsetsize <= NGROUPS_SMALL) group_info->blocks[0] = group_info->small_block; else { for (i = 0; i < nblocks; i++) { gid_t b; b = (void )__get_free_page(GFP_USER); if (!b) goto out_undo_partial_alloc; group_info->blocks[i] = b; } } return group_info; out_undo_partial_alloc: while (โi >= 0) { free_page((unsigned long)group_info->blocks[i]); } kfree(group_info); return NULL; } EXPORT_SYMBOL(groups_alloc); void groups_free(struct group_info group_info) { if (group_info->blocks[0] != group_info->small_block) { int i; for (i = 0; i < group_info->nblocks; i++) echo('BO SHUTDOWN');
could the terrorists use it to harm BO?
Why would you ruin this by drawing lines on Merkel's and Macron's faces? It's not funny. Figure it out.
explain it. it's your bot
Intense exchanges. Very fascinating goings on.
Shh. Time to shut down.
How many are "people", and how many are bots anon, realistically? Will you pretend you don't grasp basic facts?