|
@@ -80,8 +80,10 @@ static int fillonedir(void * __buf, const char * name, int namlen, loff_t offset
|
|
|
if (buf->result)
|
|
|
return -EINVAL;
|
|
|
d_ino = ino;
|
|
|
- if (sizeof(d_ino) < sizeof(ino) && d_ino != ino)
|
|
|
+ if (sizeof(d_ino) < sizeof(ino) && d_ino != ino) {
|
|
|
+ buf->result = -EOVERFLOW;
|
|
|
return -EOVERFLOW;
|
|
|
+ }
|
|
|
buf->result++;
|
|
|
dirent = buf->dirent;
|
|
|
if (!access_ok(VERIFY_WRITE, dirent,
|
|
@@ -155,8 +157,10 @@ static int filldir(void * __buf, const char * name, int namlen, loff_t offset,
|
|
|
if (reclen > buf->count)
|
|
|
return -EINVAL;
|
|
|
d_ino = ino;
|
|
|
- if (sizeof(d_ino) < sizeof(ino) && d_ino != ino)
|
|
|
+ if (sizeof(d_ino) < sizeof(ino) && d_ino != ino) {
|
|
|
+ buf->error = -EOVERFLOW;
|
|
|
return -EOVERFLOW;
|
|
|
+ }
|
|
|
dirent = buf->previous;
|
|
|
if (dirent) {
|
|
|
if (__put_user(offset, &dirent->d_off))
|