On Sun, Nov 01, 2020 at 01:43:13PM -0800, Joe Perches wrote: > > Why did you change this? > > Are you asking about the function argument alignment or the commit message? The indentation. Don't change the fucking indentation, Joe. > > Look, this isn't performance sensitive code. Just do something simple. > > > > if (shmem_huge == values[i]) > > buf += sysfs_emit(buf, "[%s]", > > shmem_format_huge(values[i])); > > else > > buf += sysfs_emit(buf, "%s", > > shmem_format_huge(values[i])); > > if (i == ARRAY_SIZE(values) - 1) > > buf += sysfs_emit(buf, "\n"); > > else > > buf += sysfs_emit(buf, " "); > > > > Shame there's no sysfs_emitc, but there you go. > > I think what's there is simple. Again, you're wrong. > And your suggested code doesn't work. > sysfs_emit is used for single emits. > sysfs_emit_at is used for multiple emits. Oh, ugh, sysfs_emit() should be able to work on a buffer that isn't page aligned. Greg, how about this? +++ b/fs/sysfs/file.c @@ -722,13 +722,13 @@ int sysfs_emit(char *buf, const char *fmt, ...) { va_list args; int len; + int start = offset_in_page(buf); - if (WARN(!buf || offset_in_page(buf), - "invalid sysfs_emit: buf:%p\n", buf)) + if (WARN(!buf, "invalid sysfs_emit: buf:%p\n", buf)) return 0; va_start(args, fmt); - len = vscnprintf(buf, PAGE_SIZE, fmt, args); + len = vscnprintf(buf, PAGE_SIZE - start, fmt, args); va_end(args); return len;