mirror of
https://github.com/AuxXxilium/kmod.git
synced 2024-12-27 13:55:35 +07:00
depmod: return error when index is truncated due to ENOSPC
Before: ======= [lucas@vader kmod]$ sudo depmod [lucas@vader kmod]$ echo $? 0 [lucas@vader kmod]$ ls -l /lib/modules/$(uname -r) total 12 drwxr-xr-x 8 root root 160 Jun 13 11:05 kernel -rw-r--r-- 1 root root 12288 Jun 15 21:29 modules.alias -rw-r--r-- 1 root root 0 Jun 15 21:29 modules.alias.bin -rw-r--r-- 1 root root 0 Jun 15 21:29 modules.dep -rw-r--r-- 1 root root 0 Jun 15 21:29 modules.dep.bin -rw-r--r-- 1 root root 0 Jun 15 21:29 modules.devname -rw-r--r-- 1 root root 0 Jun 15 21:29 modules.softdep -rw-r--r-- 1 root root 0 Jun 15 21:29 modules.symbols -rw-r--r-- 1 root root 0 Jun 15 21:29 modules.symbols.bin Note that modules.alias is truncated and the other have size == 0 After: ====== [lucas@vader kmod]$ sudo ./tools/depmod WARNING: could not open /lib/modules/3.5.0-rc2-demarchi-00028-g94fa83c/modules.order: No such file or directory ERROR: Could not create index: output truncated: No space left on device [lucas@vader kmod]$ echo $? 1
This commit is contained in:
parent
015946da0c
commit
a4fb97a71e
@ -2237,6 +2237,7 @@ static int depmod_output(struct depmod *depmod, FILE *out)
|
||||
FILE *fp = out;
|
||||
char tmp[NAME_MAX] = "";
|
||||
int r;
|
||||
long eof;
|
||||
|
||||
if (fp == NULL) {
|
||||
int flags = O_CREAT | O_TRUNC | O_WRONLY;
|
||||
@ -2262,6 +2263,7 @@ static int depmod_output(struct depmod *depmod, FILE *out)
|
||||
if (fp == out)
|
||||
continue;
|
||||
|
||||
eof = ftell(fp);
|
||||
fclose(fp);
|
||||
if (r < 0) {
|
||||
if (unlinkat(dfd, tmp, 0) != 0)
|
||||
@ -2280,6 +2282,13 @@ static int depmod_output(struct depmod *depmod, FILE *out)
|
||||
dname, tmp, dname, itr->name);
|
||||
break;
|
||||
}
|
||||
|
||||
if (eof == EOF) {
|
||||
err = -ENOSPC;
|
||||
ERR("Could not create index: output truncated: %s\n",
|
||||
strerror(-err));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (dfd >= 0)
|
||||
|
Loading…
Reference in New Issue
Block a user