WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #65: new file mode 100644 WARNING: line length of 84 exceeds 80 columns #98: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:29: + * Thread-specific memory for storing TLD is allocated lazily on the first call to WARNING: line length of 87 exceeds 80 columns #99: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:30: + * tld_get_data(). The thread that calls it must also calls tld_free() on thread exit WARNING: line length of 89 exceeds 80 columns #100: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:31: + * to prevent memory leak. Pthread will be included if the option is defined. A pthread WARNING: line length of 90 exceeds 80 columns #104: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:35: + * TLD_DYN_DATA_SIZE - The maximum size of memory allocated for TLDs created dynamically WARNING: line length of 87 exceeds 80 columns #107: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:38: + * A TLD can be defined statically using TLD_DEFINE_KEY() or created on the fly using WARNING: line length of 88 exceeds 80 columns #108: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:39: + * tld_create_key(). As the total size of TLDs created with tld_create_key() cannot be WARNING: line length of 89 exceeds 80 columns #109: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:40: + * possibly known statically, a memory area of size TLD_DYN_DATA_SIZE will be allocated WARNING: line length of 84 exceeds 80 columns #110: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:41: + * for these TLDs. This additional memory is allocated for every thread that calls WARNING: line length of 83 exceeds 80 columns #111: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:42: + * tld_get_data() even if no tld_create_key are actually called, so be mindful of WARNING: line length of 91 exceeds 80 columns #112: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:43: + * potential memory wastage. Use TLD_DEFINE_KEY() whenever possible as just enough memory WARNING: line length of 85 exceeds 80 columns #118: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:49: + * Setting TLD_NAME_LEN will affect the maximum number of TLDs a process can store, WARNING: line length of 88 exceeds 80 columns #124: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:55: + * When allocating the memory for storing TLDs, we need to make sure there is a memory WARNING: line length of 88 exceeds 80 columns #125: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:56: + * region of the X bytes within a page. This is due to the limit posed by UPTR: memory WARNING: line length of 86 exceeds 80 columns #126: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:57: + * pinned to the kernel cannot exceed a page nor can it cross the page boundary. The WARNING: line length of 82 exceeds 80 columns #127: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:58: + * library normally calls malloc(2*X) given X bytes of total TLDs, and only uses WARNING: line length of 90 exceeds 80 columns #128: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:59: + * aligned_alloc(PAGE_SIZE, X) when X >= PAGE_SIZE / 2. This is to reduce memory wastage WARNING: line length of 88 exceeds 80 columns #129: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:60: + * as not all memory allocator can use the exact amount of memory requested to fulfill WARNING: line length of 90 exceeds 80 columns #130: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:61: + * aligned_alloc(). For example, some may round the size up to the alignment. Enable the WARNING: line length of 88 exceeds 80 columns #131: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:62: + * option to always use aligned_alloc() if the implementation has low memory overhead. WARNING: Use of volatile is usually wrong: see Documentation/process/volatile-considered-harmful.rst #142: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:73: +#define TLD_READ_ONCE(x) (*(volatile typeof(x) *)&(x)) WARNING: do not add new typedefs #158: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:89: +typedef struct { WARNING: Missing a blank line after declarations #164: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:95: + char name[TLD_NAME_LEN]; + _Atomic __u16 size; WARNING: Prefer __weak over __attribute__((weak)) #183: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:114: +struct u_tld_metadata * _Atomic tld_metadata_p __attribute__((weak)); WARNING: Prefer __weak over __attribute__((weak)) #184: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:115: +__thread struct u_tld_data *tld_data_p __attribute__((weak)); WARNING: Prefer __weak over __attribute__((weak)) #185: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:116: +__thread void *tld_data_alloc_p __attribute__((weak)); WARNING: Prefer __weak over __attribute__((weak)) #188: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:119: +pthread_key_t tld_pthread_key __attribute__((weak)); ERROR: Bad function definition - int __tld_init_metadata() should probably be int __tld_init_metadata(void) #198: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:129: +static int __tld_init_metadata() WARNING: line length of 84 exceeds 80 columns #203: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:134: + meta = (struct u_tld_metadata *)aligned_alloc(TLD_PAGE_SIZE, TLD_PAGE_SIZE); WARNING: line length of 88 exceeds 80 columns #256: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:187: + * The size of tld_map_value::data is a page in bpf. If d span across two pages, WARNING: line length of 88 exceeds 80 columns #257: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:188: + * find the page that contains large enough memory and pin the start of the page WARNING: line length of 87 exceeds 80 columns #258: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:189: + * via UPTR (i.e., map_val.data). If the usable memory lays in the second page, WARNING: line length of 92 exceeds 80 columns #265: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:196: + } else if (TLD_PAGE_SIZE - (~TLD_PAGE_MASK & (intptr_t)d) >= tld_metadata_p->size) { WARNING: line length of 97 exceeds 80 columns #268: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:199: + data->start = (~TLD_PAGE_MASK & (intptr_t)d) + offsetof(struct u_tld_data, data); WARNING: line length of 87 exceeds 80 columns #270: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:201: + map_val.data = (void *)((TLD_PAGE_MASK & (intptr_t)d) + TLD_PAGE_SIZE); WARNING: line length of 97 exceeds 80 columns #309: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:240: + /* A metadata is not ready until size is updated with a non-zero value */ WARNING: line length of 86 exceeds 80 columns #310: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:241: + while (!(sz = atomic_load(&tld_metadata_p->metadata[i].size))) WARNING: line length of 91 exceeds 80 columns #313: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:244: + if (!strncmp(tld_metadata_p->metadata[i].name, name, TLD_NAME_LEN)) WARNING: 'upto' may be misspelled - perhaps 'up to'? #321: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:252: + * TLD_DEFINE_KEY() is given memory upto a page while at most ^^^^ WARNING: line length of 100 exceeds 80 columns #328: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:259: + if (off + TLD_ROUND_UP(size, 8) > TLD_PAGE_SIZE - sizeof(struct u_tld_data)) WARNING: line length of 84 exceeds 80 columns #334: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:265: + * Only one tld_create_key() can increase the current cnt by one and WARNING: line length of 91 exceeds 80 columns #335: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:266: + * takes the latest available slot. Other threads will check again if a new WARNING: line length of 86 exceeds 80 columns #336: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:267: + * TLD can still be added, and then compete for the new slot after the WARNING: line length of 89 exceeds 80 columns #339: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:270: + if (!atomic_compare_exchange_strong(&tld_metadata_p->cnt, &cnt, cnt + 1)) WARNING: Prefer strscpy, strscpy_pad, or __nonstring over strncpy - see: https://github.com/KSPP/linux/issues/90 #342: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:273: + strncpy(tld_metadata_p->metadata[i].name, name, TLD_NAME_LEN); WARNING: line length of 81 exceeds 80 columns #351: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:282: + * TLD_DEFINE_KEY() - Defines a TLD and a file-scope key associated with the TLD. WARNING: line length of 86 exceeds 80 columns #359: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:290: + * A file-scope key of opaque type, tld_key_t, will be declared and initialized before WARNING: line length of 89 exceeds 80 columns #360: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:291: + * main() starts. Use tld_key_is_err() or tld_key_err_or_zero() later to check if the key WARNING: line length of 82 exceeds 80 columns #361: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:292: + * creation succeeded. Pass the key to tld_get_data() to get a pointer to the TLD. WARNING: line length of 83 exceeds 80 columns #364: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:295: + * The total size of TLDs created using TLD_DEFINE_KEY() cannot exceed a page. Just WARNING: line length of 87 exceeds 80 columns #365: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:296: + * enough memory will be allocated for each thread on the first call to tld_get_data(). WARNING: line length of 87 exceeds 80 columns #382: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:313: + * Returns an opaque object key. Use tld_key_is_err() or tld_key_err_or_zero() to check WARNING: line length of 84 exceeds 80 columns #383: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:314: + * if the key creation succeeded. Pass the key to tld_get_data() to get a pointer to WARNING: line length of 81 exceeds 80 columns #386: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:317: + * Use tld_create_key() only when @name is not known statically or a TLD needs to WARNING: line length of 85 exceeds 80 columns #389: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:320: + * An additional TLD_DYN_DATA_SIZE bytes are allocated per-thread to accommodate TLDs WARNING: line length of 85 exceeds 80 columns #390: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:321: + * created dynamically with tld_create_key(). Since only a user page is pinned to the WARNING: line length of 81 exceeds 80 columns #391: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:322: + * kernel, when TLDs created with TLD_DEFINE_KEY() uses more than TLD_PAGE_SIZE - WARNING: __always_unused or __maybe_unused is preferred over __attribute__((__unused__)) #394: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:325: +__attribute__((unused)) WARNING: __always_unused or __maybe_unused is preferred over __attribute__((__unused__)) #400: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:331: +__attribute__((unused)) WARNING: __always_unused or __maybe_unused is preferred over __attribute__((__unused__)) #406: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:337: +__attribute__((unused)) WARNING: line length of 82 exceeds 80 columns #413: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:344: + * tld_get_data() - Gets a pointer to the TLD associated with the given key of the WARNING: line length of 88 exceeds 80 columns #416: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:347: + * @map_fd: A file descriptor of tld_data_map, the underlying BPF task local storage map WARNING: line length of 86 exceeds 80 columns #420: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:351: + * Returns a pointer to the TLD if the key is valid; NULL if not enough memory for TLD WARNING: line length of 90 exceeds 80 columns #421: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:352: + * for this thread, or the key is invalid. The returned pointer is guaranteed to be 8-byte WARNING: __always_unused or __maybe_unused is preferred over __attribute__((__unused__)) #427: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:358: +__attribute__((unused)) WARNING: line length of 84 exceeds 80 columns #446: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:377: + * For the calling thread, all pointers to TLDs acquired before will become invalid. WARNING: line length of 81 exceeds 80 columns #449: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:380: + * TLD_FREE_DATA_ON_THREAD_EXIT and let the library call tld_free() automatically WARNING: __always_unused or __maybe_unused is preferred over __attribute__((__unused__)) #452: FILE: tools/testing/selftests/bpf/prog_tests/task_local_data.h:383: +__attribute__((unused)) WARNING: line length of 81 exceeds 80 columns #504: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:32: + * tld_object on the stack. Then, TLDs can be accessed by calling tld_get_data(). WARNING: do not add new typedefs #541: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:69: +typedef struct { CHECK: spaces preferred around that '*' (ctx:WxV) #562: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:90: + struct u_tld_data __uptr *data; ^ CHECK: spaces preferred around that '*' (ctx:WxV) #563: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:91: + struct u_tld_metadata __uptr *metadata; ^ WARNING: do not add new typedefs #566: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:94: +typedef struct tld_uptr_dummy { WARNING: line length of 81 exceeds 80 columns #575: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:103: + * Force the compiler to generate the actual definition of u_tld_metadata ERROR: Use C99 flexible arrays - see https://docs.kernel.org/process/deprecated.html#zero-length-and-one-element-arrays #580: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:108: + tld_uptr_dummy_t dummy[0]; +}; WARNING: line length of 81 exceeds 80 columns #584: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:112: + * Members should be tld_key_t and passed to the 3rd argument of tld_fetch_key(). WARNING: line length of 81 exceeds 80 columns #608: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:136: + * Returns 0 on success; -ENODATA if the task has no TLD; -ENOMEM if the creation WARNING: __always_unused or __maybe_unused is preferred over __attribute__((__unused__)) #611: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:139: +__attribute__((unused)) WARNING: __always_unused or __maybe_unused is preferred over __attribute__((__unused__)) #626: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:154: +__attribute__((unused)) WARNING: line length of 82 exceeds 80 columns #627: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:155: +static int __tld_fetch_key(struct tld_object *tld_obj, const char *name, int next) WARNING: line length of 91 exceeds 80 columns #632: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:160: + if (!tld_obj->data_map || !tld_obj->data_map->data || !tld_obj->data_map->metadata) WARNING: line length of 104 exceeds 80 columns #641: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:169: + if (meta_off > sizeof(struct u_tld_metadata) - offsetof(struct u_tld_metadata, metadata) WARNING: line length of 91 exceeds 80 columns #642: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:170: + - sizeof(struct tld_metadata)) WARNING: line length of 81 exceeds 80 columns #672: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:200: + * subsequent tld_get_data() can use it to directly locate the TLD. It not found, WARNING: line length of 89 exceeds 80 columns #676: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:204: +#define tld_get_data(tld_obj, key, name, size) \ CHECK: Macro argument 'key' may be better as '(key)' to avoid precedence issues #676: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:204: +#define tld_get_data(tld_obj, key, name, size) \ + ({ \ + void *data = NULL, *_data = (tld_obj)->data_map->data; \ + int cnt, off = (tld_obj)->key_map->key.off; \ + \ + if (likely(_data)) { \ + if (likely(off > 0)) { \ + barrier_var(off); \ + if (likely(off < __PAGE_SIZE - size)) \ + data = _data + off; \ + } else { \ + cnt = -(off); \ + if (likely((tld_obj)->data_map->metadata) && \ + cnt < (tld_obj)->data_map->metadata->cnt) { \ + off = __tld_fetch_key(tld_obj, name, cnt); \ + (tld_obj)->key_map->key.off = off; \ + \ + if (likely(off < __PAGE_SIZE - size)) { \ + barrier_var(off); \ + if (off > 0) \ + data = _data + off; \ + } \ + } \ + } \ + } \ + data; \ + }) CHECK: Macro argument 'size' may be better as '(size)' to avoid precedence issues #676: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:204: +#define tld_get_data(tld_obj, key, name, size) \ + ({ \ + void *data = NULL, *_data = (tld_obj)->data_map->data; \ + int cnt, off = (tld_obj)->key_map->key.off; \ + \ + if (likely(_data)) { \ + if (likely(off > 0)) { \ + barrier_var(off); \ + if (likely(off < __PAGE_SIZE - size)) \ + data = _data + off; \ + } else { \ + cnt = -(off); \ + if (likely((tld_obj)->data_map->metadata) && \ + cnt < (tld_obj)->data_map->metadata->cnt) { \ + off = __tld_fetch_key(tld_obj, name, cnt); \ + (tld_obj)->key_map->key.off = off; \ + \ + if (likely(off < __PAGE_SIZE - size)) { \ + barrier_var(off); \ + if (off > 0) \ + data = _data + off; \ + } \ + } \ + } \ + } \ + data; \ + }) WARNING: line length of 89 exceeds 80 columns #677: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:205: + ({ \ WARNING: line length of 89 exceeds 80 columns #678: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:206: + void *data = NULL, *_data = (tld_obj)->data_map->data; \ WARNING: line length of 89 exceeds 80 columns #679: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:207: + int cnt, off = (tld_obj)->key_map->key.off; \ WARNING: line length of 89 exceeds 80 columns #680: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:208: + \ WARNING: line length of 89 exceeds 80 columns #681: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:209: + if (likely(_data)) { \ WARNING: line length of 89 exceeds 80 columns #682: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:210: + if (likely(off > 0)) { \ WARNING: line length of 89 exceeds 80 columns #683: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:211: + barrier_var(off); \ WARNING: line length of 89 exceeds 80 columns #684: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:212: + if (likely(off < __PAGE_SIZE - size)) \ WARNING: line length of 89 exceeds 80 columns #685: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:213: + data = _data + off; \ WARNING: line length of 89 exceeds 80 columns #686: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:214: + } else { \ WARNING: line length of 89 exceeds 80 columns #687: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:215: + cnt = -(off); \ WARNING: line length of 89 exceeds 80 columns #688: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:216: + if (likely((tld_obj)->data_map->metadata) && \ WARNING: line length of 89 exceeds 80 columns #689: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:217: + cnt < (tld_obj)->data_map->metadata->cnt) { \ WARNING: line length of 89 exceeds 80 columns #690: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:218: + off = __tld_fetch_key(tld_obj, name, cnt); \ WARNING: line length of 89 exceeds 80 columns #691: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:219: + (tld_obj)->key_map->key.off = off; \ WARNING: line length of 89 exceeds 80 columns #692: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:220: + \ WARNING: line length of 89 exceeds 80 columns #693: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:221: + if (likely(off < __PAGE_SIZE - size)) { \ WARNING: line length of 89 exceeds 80 columns #694: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:222: + barrier_var(off); \ WARNING: line length of 89 exceeds 80 columns #695: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:223: + if (off > 0) \ WARNING: Too many leading tabs - consider code refactoring #695: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:223: + if (off > 0) \ WARNING: line length of 89 exceeds 80 columns #696: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:224: + data = _data + off; \ WARNING: line length of 89 exceeds 80 columns #697: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:225: + } \ WARNING: line length of 89 exceeds 80 columns #698: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:226: + } \ WARNING: line length of 89 exceeds 80 columns #699: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:227: + } \ WARNING: line length of 89 exceeds 80 columns #700: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:228: + } \ WARNING: line length of 89 exceeds 80 columns #701: FILE: tools/testing/selftests/bpf/progs/task_local_data.bpf.h:229: + data; \ total: 2 errors, 107 warnings, 4 checks, 629 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. Commit aa25a1c0b373 ("selftests/bpf: Introduce task local data") has style problems, please review. NOTE: Ignored message types: ALLOC_SIZEOF_STRUCT BAD_REPORTED_BY_LINK CAMELCASE COMMIT_LOG_LONG_LINE GIT_COMMIT_ID MACRO_ARG_REUSE NO_AUTHOR_SIGN_OFF NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS.