ext4: return ENOMEM if sb_getblk() fails
The only reason for sb_getblk() failing is if it can't allocate the buffer_head. So ENOMEM is more appropriate than EIO. In addition, make sure that the file system is marked as being inconsistent if sb_getblk() fails. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Cc: stable@vger.kernel.org
Este cometimento está contido em:
@@ -887,16 +887,17 @@ inserted:
|
||||
|
||||
new_bh = sb_getblk(sb, block);
|
||||
if (!new_bh) {
|
||||
error = -ENOMEM;
|
||||
getblk_failed:
|
||||
ext4_free_blocks(handle, inode, NULL, block, 1,
|
||||
EXT4_FREE_BLOCKS_METADATA);
|
||||
error = -EIO;
|
||||
goto cleanup;
|
||||
}
|
||||
lock_buffer(new_bh);
|
||||
error = ext4_journal_get_create_access(handle, new_bh);
|
||||
if (error) {
|
||||
unlock_buffer(new_bh);
|
||||
error = -EIO;
|
||||
goto getblk_failed;
|
||||
}
|
||||
memcpy(new_bh->b_data, s->base, new_bh->b_size);
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador