In dd_main(), if skip and lseek fails, it's not checked why it happened. Thus with CONFIG_LFS, even if the offset is simply behind the large file end (EINVAL), the code still tries to seek via safe_read(). Normal coreutils are somewhat smarter about this and fail immediately...