+static bool cpus_offline_empty(void) +{ + char offline_cpus_str[64]; + FILE *fp; + + fp = fopen("/sys/devices/system/cpu/offline", "r"); Check for fp == NULL before using it. + if (fscanf(fp, "%s", offline_cpus_str) < 0) { fscanf() seems like a heavy hammer. if (fgets(offline_cpus_str, sizeof(offline_cpus_str), fp) == NULL) { + if (!errno) { Don't need an errno check (seems dubious mixing errno with stdio). + fclose(fp); + return 1; return true; + } + ksft_perror("Could not read offline CPUs file!"); + } + + fclose(fp); + + return 0; return false; +}