{"push_id":3147301951,"size":2,"distinct_size":2,"ref":"refs/heads/playground","head":"f688d3b1311dceb19d609a75301a22c34920cd50","before":"b98b33d28f896103b0b80d4ca997c49fff8fd15b","commits":[{"sha":"9a941d95c63f776d0e204189e9138a7131cf910e","author":{"name":"Kees Cook","email":"50cb10d2be062154b17ab4d66a4eab34f1cf1c84@chromium.org"},"message":"BACKPORT: treewide: devm_kzalloc() -> devm_kcalloc()\n\ncommit a86854d0c599b3202307abceb68feee4d7061578 upstream.\n\nThe devm_kzalloc() function has a 2-factor argument form, devm_kcalloc().\nThis patch replaces cases of:\n\n        devm_kzalloc(handle, a * b, gfp)\n\nwith:\n        devm_kcalloc(handle, a * b, gfp)\n\nas well as handling cases of:\n\n        devm_kzalloc(handle, a * b * c, gfp)\n\nwith:\n\n        devm_kzalloc(handle, array3_size(a, b, c), gfp)\n\nas it's slightly less ugly than:\n\n        devm_kcalloc(handle, array_size(a, b), c, gfp)\n\nThis does, however, attempt to ignore constant size factors like:\n\n        devm_kzalloc(handle, 4 * 1024, gfp)\n\nthough any constants defined via macros get caught up in the conversion.\n\nAny factors with a sizeof() of \"unsigned char\", \"char\", and \"u8\" were\ndropped, since they're redundant.\n\nSome manual whitespace fixes were needed in this patch, as Coccinelle\nreally liked to write \"=devm_kcalloc...\" instead of \"= devm_kcalloc...\".\n\nThe Coccinelle script used for this was:\n\n// Fix redundant parens around sizeof().\n@@\nexpression HANDLE;\ntype TYPE;\nexpression THING, E;\n@@\n\n(\n  devm_kzalloc(HANDLE,\n-\t(sizeof(TYPE)) * E\n+\tsizeof(TYPE) * E\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\t(sizeof(THING)) * E\n+\tsizeof(THING) * E\n  , ...)\n)\n\n// Drop single-byte sizes and redundant parens.\n@@\nexpression HANDLE;\nexpression COUNT;\ntypedef u8;\ntypedef __u8;\n@@\n\n(\n  devm_kzalloc(HANDLE,\n-\tsizeof(u8) * (COUNT)\n+\tCOUNT\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(__u8) * (COUNT)\n+\tCOUNT\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(char) * (COUNT)\n+\tCOUNT\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(unsigned char) * (COUNT)\n+\tCOUNT\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(u8) * COUNT\n+\tCOUNT\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(__u8) * COUNT\n+\tCOUNT\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(char) * COUNT\n+\tCOUNT\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(unsigned char) * COUNT\n+\tCOUNT\n  , ...)\n)\n\n// 2-factor product with sizeof(type/expression) and identifier or constant.\n@@\nexpression HANDLE;\ntype TYPE;\nexpression THING;\nidentifier COUNT_ID;\nconstant COUNT_CONST;\n@@\n\n(\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tsizeof(TYPE) * (COUNT_ID)\n+\tCOUNT_ID, sizeof(TYPE)\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tsizeof(TYPE) * COUNT_ID\n+\tCOUNT_ID, sizeof(TYPE)\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tsizeof(TYPE) * (COUNT_CONST)\n+\tCOUNT_CONST, sizeof(TYPE)\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tsizeof(TYPE) * COUNT_CONST\n+\tCOUNT_CONST, sizeof(TYPE)\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tsizeof(THING) * (COUNT_ID)\n+\tCOUNT_ID, sizeof(THING)\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tsizeof(THING) * COUNT_ID\n+\tCOUNT_ID, sizeof(THING)\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tsizeof(THING) * (COUNT_CONST)\n+\tCOUNT_CONST, sizeof(THING)\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tsizeof(THING) * COUNT_CONST\n+\tCOUNT_CONST, sizeof(THING)\n  , ...)\n)\n\n// 2-factor product, only identifiers.\n@@\nexpression HANDLE;\nidentifier SIZE, COUNT;\n@@\n\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tSIZE * COUNT\n+\tCOUNT, SIZE\n  , ...)\n\n// 3-factor product with 1 sizeof(type) or sizeof(expression), with\n// redundant parens removed.\n@@\nexpression HANDLE;\nexpression THING;\nidentifier STRIDE, COUNT;\ntype TYPE;\n@@\n\n(\n  devm_kzalloc(HANDLE,\n-\tsizeof(TYPE) * (COUNT) * (STRIDE)\n+\tarray3_size(COUNT, STRIDE, sizeof(TYPE))\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(TYPE) * (COUNT) * STRIDE\n+\tarray3_size(COUNT, STRIDE, sizeof(TYPE))\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(TYPE) * COUNT * (STRIDE)\n+\tarray3_size(COUNT, STRIDE, sizeof(TYPE))\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(TYPE) * COUNT * STRIDE\n+\tarray3_size(COUNT, STRIDE, sizeof(TYPE))\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(THING) * (COUNT) * (STRIDE)\n+\tarray3_size(COUNT, STRIDE, sizeof(THING))\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(THING) * (COUNT) * STRIDE\n+\tarray3_size(COUNT, STRIDE, sizeof(THING))\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(THING) * COUNT * (STRIDE)\n+\tarray3_size(COUNT, STRIDE, sizeof(THING))\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(THING) * COUNT * STRIDE\n+\tarray3_size(COUNT, STRIDE, sizeof(THING))\n  , ...)\n)\n\n// 3-factor product with 2 sizeof(variable), with redundant parens removed.\n@@\nexpression HANDLE;\nexpression THING1, THING2;\nidentifier COUNT;\ntype TYPE1, TYPE2;\n@@\n\n(\n  devm_kzalloc(HANDLE,\n-\tsizeof(TYPE1) * sizeof(TYPE2) * COUNT\n+\tarray3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(TYPE1) * sizeof(THING2) * (COUNT)\n+\tarray3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(THING1) * sizeof(THING2) * COUNT\n+\tarray3_size(COUNT, sizeof(THING1), sizeof(THING2))\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(THING1) * sizeof(THING2) * (COUNT)\n+\tarray3_size(COUNT, sizeof(THING1), sizeof(THING2))\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(TYPE1) * sizeof(THING2) * COUNT\n+\tarray3_size(COUNT, sizeof(TYPE1), sizeof(THING2))\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tsizeof(TYPE1) * sizeof(THING2) * (COUNT)\n+\tarray3_size(COUNT, sizeof(TYPE1), sizeof(THING2))\n  , ...)\n)\n\n// 3-factor product, only identifiers, with redundant parens removed.\n@@\nexpression HANDLE;\nidentifier STRIDE, SIZE, COUNT;\n@@\n\n(\n  devm_kzalloc(HANDLE,\n-\t(COUNT) * STRIDE * SIZE\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tCOUNT * (STRIDE) * SIZE\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tCOUNT * STRIDE * (SIZE)\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\t(COUNT) * (STRIDE) * SIZE\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tCOUNT * (STRIDE) * (SIZE)\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\t(COUNT) * STRIDE * (SIZE)\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\t(COUNT) * (STRIDE) * (SIZE)\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tCOUNT * STRIDE * SIZE\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n)\n\n// Any remaining multi-factor products, first at least 3-factor products,\n// when they're not all constants...\n@@\nexpression HANDLE;\nexpression E1, E2, E3;\nconstant C1, C2, C3;\n@@\n\n(\n  devm_kzalloc(HANDLE, C1 * C2 * C3, ...)\n|\n  devm_kzalloc(HANDLE,\n-\t(E1) * E2 * E3\n+\tarray3_size(E1, E2, E3)\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\t(E1) * (E2) * E3\n+\tarray3_size(E1, E2, E3)\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\t(E1) * (E2) * (E3)\n+\tarray3_size(E1, E2, E3)\n  , ...)\n|\n  devm_kzalloc(HANDLE,\n-\tE1 * E2 * E3\n+\tarray3_size(E1, E2, E3)\n  , ...)\n)\n\n// And then all remaining 2 factors products when they're not all constants,\n// keeping sizeof() as the second factor argument.\n@@\nexpression HANDLE;\nexpression THING, E1, E2;\ntype TYPE;\nconstant C1, C2, C3;\n@@\n\n(\n  devm_kzalloc(HANDLE, sizeof(THING) * C2, ...)\n|\n  devm_kzalloc(HANDLE, sizeof(TYPE) * C2, ...)\n|\n  devm_kzalloc(HANDLE, C1 * C2 * C3, ...)\n|\n  devm_kzalloc(HANDLE, C1 * C2, ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tsizeof(TYPE) * (E2)\n+\tE2, sizeof(TYPE)\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tsizeof(TYPE) * E2\n+\tE2, sizeof(TYPE)\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tsizeof(THING) * (E2)\n+\tE2, sizeof(THING)\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tsizeof(THING) * E2\n+\tE2, sizeof(THING)\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\t(E1) * E2\n+\tE1, E2\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\t(E1) * (E2)\n+\tE1, E2\n  , ...)\n|\n- devm_kzalloc\n+ devm_kcalloc\n  (HANDLE,\n-\tE1 * E2\n+\tE1, E2\n  , ...)\n)\n\nSigned-off-by: Kees Cook <keescook@chromium.org>\nSigned-off-by: Nathan Chancellor <natechancellor@gmail.com>","distinct":true,"url":"https://api.github.com/repos/whoknowswhoiam/weebmsm8998-pie/commits/9a941d95c63f776d0e204189e9138a7131cf910e"},{"sha":"f688d3b1311dceb19d609a75301a22c34920cd50","author":{"name":"Kees Cook","email":"50cb10d2be062154b17ab4d66a4eab34f1cf1c84@chromium.org"},"message":"BACKPORT: treewide: kzalloc_node() -> kcalloc_node()\n\ncommit 590b5b7d8671e011d1a8e1ab20c60addb249d015 upstream.\n\nThe kzalloc_node() function has a 2-factor argument form, kcalloc_node(). This\npatch replaces cases of:\n\n        kzalloc_node(a * b, gfp, node)\n\nwith:\n        kcalloc_node(a * b, gfp, node)\n\nas well as handling cases of:\n\n        kzalloc_node(a * b * c, gfp, node)\n\nwith:\n\n        kzalloc_node(array3_size(a, b, c), gfp, node)\n\nas it's slightly less ugly than:\n\n        kcalloc_node(array_size(a, b), c, gfp, node)\n\nThis does, however, attempt to ignore constant size factors like:\n\n        kzalloc_node(4 * 1024, gfp, node)\n\nthough any constants defined via macros get caught up in the conversion.\n\nAny factors with a sizeof() of \"unsigned char\", \"char\", and \"u8\" were\ndropped, since they're redundant.\n\nThe Coccinelle script used for this was:\n\n// Fix redundant parens around sizeof().\n@@\ntype TYPE;\nexpression THING, E;\n@@\n\n(\n  kzalloc_node(\n-\t(sizeof(TYPE)) * E\n+\tsizeof(TYPE) * E\n  , ...)\n|\n  kzalloc_node(\n-\t(sizeof(THING)) * E\n+\tsizeof(THING) * E\n  , ...)\n)\n\n// Drop single-byte sizes and redundant parens.\n@@\nexpression COUNT;\ntypedef u8;\ntypedef __u8;\n@@\n\n(\n  kzalloc_node(\n-\tsizeof(u8) * (COUNT)\n+\tCOUNT\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(__u8) * (COUNT)\n+\tCOUNT\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(char) * (COUNT)\n+\tCOUNT\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(unsigned char) * (COUNT)\n+\tCOUNT\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(u8) * COUNT\n+\tCOUNT\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(__u8) * COUNT\n+\tCOUNT\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(char) * COUNT\n+\tCOUNT\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(unsigned char) * COUNT\n+\tCOUNT\n  , ...)\n)\n\n// 2-factor product with sizeof(type/expression) and identifier or constant.\n@@\ntype TYPE;\nexpression THING;\nidentifier COUNT_ID;\nconstant COUNT_CONST;\n@@\n\n(\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tsizeof(TYPE) * (COUNT_ID)\n+\tCOUNT_ID, sizeof(TYPE)\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tsizeof(TYPE) * COUNT_ID\n+\tCOUNT_ID, sizeof(TYPE)\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tsizeof(TYPE) * (COUNT_CONST)\n+\tCOUNT_CONST, sizeof(TYPE)\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tsizeof(TYPE) * COUNT_CONST\n+\tCOUNT_CONST, sizeof(TYPE)\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tsizeof(THING) * (COUNT_ID)\n+\tCOUNT_ID, sizeof(THING)\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tsizeof(THING) * COUNT_ID\n+\tCOUNT_ID, sizeof(THING)\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tsizeof(THING) * (COUNT_CONST)\n+\tCOUNT_CONST, sizeof(THING)\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tsizeof(THING) * COUNT_CONST\n+\tCOUNT_CONST, sizeof(THING)\n  , ...)\n)\n\n// 2-factor product, only identifiers.\n@@\nidentifier SIZE, COUNT;\n@@\n\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tSIZE * COUNT\n+\tCOUNT, SIZE\n  , ...)\n\n// 3-factor product with 1 sizeof(type) or sizeof(expression), with\n// redundant parens removed.\n@@\nexpression THING;\nidentifier STRIDE, COUNT;\ntype TYPE;\n@@\n\n(\n  kzalloc_node(\n-\tsizeof(TYPE) * (COUNT) * (STRIDE)\n+\tarray3_size(COUNT, STRIDE, sizeof(TYPE))\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(TYPE) * (COUNT) * STRIDE\n+\tarray3_size(COUNT, STRIDE, sizeof(TYPE))\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(TYPE) * COUNT * (STRIDE)\n+\tarray3_size(COUNT, STRIDE, sizeof(TYPE))\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(TYPE) * COUNT * STRIDE\n+\tarray3_size(COUNT, STRIDE, sizeof(TYPE))\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(THING) * (COUNT) * (STRIDE)\n+\tarray3_size(COUNT, STRIDE, sizeof(THING))\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(THING) * (COUNT) * STRIDE\n+\tarray3_size(COUNT, STRIDE, sizeof(THING))\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(THING) * COUNT * (STRIDE)\n+\tarray3_size(COUNT, STRIDE, sizeof(THING))\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(THING) * COUNT * STRIDE\n+\tarray3_size(COUNT, STRIDE, sizeof(THING))\n  , ...)\n)\n\n// 3-factor product with 2 sizeof(variable), with redundant parens removed.\n@@\nexpression THING1, THING2;\nidentifier COUNT;\ntype TYPE1, TYPE2;\n@@\n\n(\n  kzalloc_node(\n-\tsizeof(TYPE1) * sizeof(TYPE2) * COUNT\n+\tarray3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(TYPE1) * sizeof(THING2) * (COUNT)\n+\tarray3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(THING1) * sizeof(THING2) * COUNT\n+\tarray3_size(COUNT, sizeof(THING1), sizeof(THING2))\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(THING1) * sizeof(THING2) * (COUNT)\n+\tarray3_size(COUNT, sizeof(THING1), sizeof(THING2))\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(TYPE1) * sizeof(THING2) * COUNT\n+\tarray3_size(COUNT, sizeof(TYPE1), sizeof(THING2))\n  , ...)\n|\n  kzalloc_node(\n-\tsizeof(TYPE1) * sizeof(THING2) * (COUNT)\n+\tarray3_size(COUNT, sizeof(TYPE1), sizeof(THING2))\n  , ...)\n)\n\n// 3-factor product, only identifiers, with redundant parens removed.\n@@\nidentifier STRIDE, SIZE, COUNT;\n@@\n\n(\n  kzalloc_node(\n-\t(COUNT) * STRIDE * SIZE\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  kzalloc_node(\n-\tCOUNT * (STRIDE) * SIZE\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  kzalloc_node(\n-\tCOUNT * STRIDE * (SIZE)\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  kzalloc_node(\n-\t(COUNT) * (STRIDE) * SIZE\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  kzalloc_node(\n-\tCOUNT * (STRIDE) * (SIZE)\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  kzalloc_node(\n-\t(COUNT) * STRIDE * (SIZE)\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  kzalloc_node(\n-\t(COUNT) * (STRIDE) * (SIZE)\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n|\n  kzalloc_node(\n-\tCOUNT * STRIDE * SIZE\n+\tarray3_size(COUNT, STRIDE, SIZE)\n  , ...)\n)\n\n// Any remaining multi-factor products, first at least 3-factor products,\n// when they're not all constants...\n@@\nexpression E1, E2, E3;\nconstant C1, C2, C3;\n@@\n\n(\n  kzalloc_node(C1 * C2 * C3, ...)\n|\n  kzalloc_node(\n-\t(E1) * E2 * E3\n+\tarray3_size(E1, E2, E3)\n  , ...)\n|\n  kzalloc_node(\n-\t(E1) * (E2) * E3\n+\tarray3_size(E1, E2, E3)\n  , ...)\n|\n  kzalloc_node(\n-\t(E1) * (E2) * (E3)\n+\tarray3_size(E1, E2, E3)\n  , ...)\n|\n  kzalloc_node(\n-\tE1 * E2 * E3\n+\tarray3_size(E1, E2, E3)\n  , ...)\n)\n\n// And then all remaining 2 factors products when they're not all constants,\n// keeping sizeof() as the second factor argument.\n@@\nexpression THING, E1, E2;\ntype TYPE;\nconstant C1, C2, C3;\n@@\n\n(\n  kzalloc_node(sizeof(THING) * C2, ...)\n|\n  kzalloc_node(sizeof(TYPE) * C2, ...)\n|\n  kzalloc_node(C1 * C2 * C3, ...)\n|\n  kzalloc_node(C1 * C2, ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tsizeof(TYPE) * (E2)\n+\tE2, sizeof(TYPE)\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tsizeof(TYPE) * E2\n+\tE2, sizeof(TYPE)\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tsizeof(THING) * (E2)\n+\tE2, sizeof(THING)\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tsizeof(THING) * E2\n+\tE2, sizeof(THING)\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\t(E1) * E2\n+\tE1, E2\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\t(E1) * (E2)\n+\tE1, E2\n  , ...)\n|\n- kzalloc_node\n+ kcalloc_node\n  (\n-\tE1 * E2\n+\tE1, E2\n  , ...)\n)\n\nSigned-off-by: Kees Cook <keescook@chromium.org>\nSigned-off-by: Nathan Chancellor <natechancellor@gmail.com>","distinct":true,"url":"https://api.github.com/repos/whoknowswhoiam/weebmsm8998-pie/commits/f688d3b1311dceb19d609a75301a22c34920cd50"}]}
{"actor":{"display_login":"whoknowswhoiam"}}