Hi, When working on some documentation scripts to show the Documentation/ABI/ files in an automated way, I ran across this "gem" of a sysfs file: Documentation/ABI/testing/sysfs-bus-pci-devices-aer_stats In it you describe how the files /sys/bus/pci/devices/<dev>/aer_dev_correctable and /sys/bus/pci/devices/<dev>/aer_dev_fatal and /sys/bus/pci/devices/<dev>/aer_dev_nonfatal all display a bunch of text on multiple lines. This violates the "one value per sysfs file" rule, and should never have been merged as-is :( Please fix it up to be a lot of individual files if your really need all of those different values. Remember, sysfs files should never have to have a parser to read them other than a simple "what is this single value", and you should NEVER have fun macros like: for (i = 0; i < ARRAY_SIZE(strings_array); i++) { \ if (strings_array[i]) \ str += sprintf(str, "%s %llu\n", \ strings_array[i], stats[i]); \ else if (stats[i]) \ str += sprintf(str, #stats_array "_bit[%d] %llu\n",\ i, stats[i]); \ } \ str += sprintf(str, "TOTAL_%s %llu\n", total_string, \ pdev->aer_stats->total_field); \ spit out sysfs information. Note, I am all for not properly checking the length of the sysfs file when writing to it, but that is ONLY because you "know" that a single integer will never overflow anything. Here you are writing a ton of different values, with no error checking at all. So just when I thought it couldn't be any worse... Please fix. thanks, greg k-h