Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e1b5b49a authored by Andrey Markovytch's avatar Andrey Markovytch
Browse files

pfk: fixed bug that caused eCryptfs ignore some of its files



Our logic that distinguished eCryptfs files from non eCryptfs ones
checked bi_vcnt field in bio to make sure it has valid bio vecs.
Apparently this field is not updated in some cases by block layer
and in general can't be trusted outside of code that own bio.
There is another field that need to be used for this purpose - bi_size

Change-Id: Ibf225543618373699a0d5adc3295daf9ded6169a
Signed-off-by: default avatarAndrey Markovytch <andreym@codeaurora.org>
parent aa3aa09a
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -153,8 +153,8 @@ static int pfk_get_page_index(const struct bio *bio, pgoff_t *page_index)
	if (!bio || !page_index)
		return -EPERM;

	/* check bio vec count > 0 before using the bio->bi_io_vec[] array */
	if (!bio->bi_vcnt)
	/* check bio bi_size > 0 before using the bio->bi_io_vec[] array */
	if (!(bio->bi_iter).bi_size)
		return -EINVAL;
	if (!bio->bi_io_vec)
		return -EINVAL;
@@ -183,8 +183,8 @@ static struct inode *pfk_bio_get_inode(const struct bio *bio)
{
	if (!bio)
		return NULL;
	/* check bio vec count > 0 before using the bio->bi_io_vec[] array */
	if (!bio->bi_vcnt)
	/* check bio bi_size > 0 before using the bio->bi_io_vec[] array */
	if (!(bio->bi_iter).bi_size)
		return NULL;
	if (!bio->bi_io_vec)
		return NULL;