2019-12-15 17:25:05

by Aditya Pakki

[permalink] [raw]
Subject: [PATCH] ecryptfs: replace BUG_ON with error handling code

In crypt_scatterlist, if the crypt_stat argument is not set up
correctly, we avoid crashing, by returning the error upstream.
This patch performs the fix.

Signed-off-by: Aditya Pakki <[email protected]>
---
fs/ecryptfs/crypto.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index f91db24bbf3b..a064b408d841 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -311,8 +311,10 @@ static int crypt_scatterlist(struct ecryptfs_crypt_stat *crypt_stat,
struct extent_crypt_result ecr;
int rc = 0;

- BUG_ON(!crypt_stat || !crypt_stat->tfm
- || !(crypt_stat->flags & ECRYPTFS_STRUCT_INITIALIZED));
+ if (!crypt_stat || !crypt_stat->tfm
+ || !(crypt_stat->flags & ECRYPTFS_STRUCT_INITIALIZED))
+ return -EINVAL;
+
if (unlikely(ecryptfs_verbosity > 0)) {
ecryptfs_printk(KERN_DEBUG, "Key size [%zd]; key:\n",
crypt_stat->key_size);
--
2.20.1


2019-12-15 21:21:31

by Markus Elfring

[permalink] [raw]
Subject: Re: [PATCH] ecryptfs: replace BUG_ON with error handling code

> In crypt_scatterlist, if the crypt_stat argument is not set up
> correctly, we avoid crashing, by returning the error upstream.

Can an other change description be more helpful here?


> This patch performs the fix.

Please replace this sentence by the tag “Fixes”.

Regards,
Markus

2020-02-14 17:39:00

by Tyler Hicks

[permalink] [raw]
Subject: Re: [PATCH] ecryptfs: replace BUG_ON with error handling code

On 2019-12-15 11:24:04, Aditya Pakki wrote:
> In crypt_scatterlist, if the crypt_stat argument is not set up
> correctly, we avoid crashing, by returning the error upstream.
> This patch performs the fix.
>
> Signed-off-by: Aditya Pakki <[email protected]>

Hi Aditya - I wanted to check in to see if you are able to submit a new
revision taking into account the feedback from Markus.

Also, I'm curious if you've been able to hit this BUG_ON() or if you are
just being proactive in cleaning up this function?

Let me know if I can help you prepare a v2 of this patch. Thanks!

Tyler

> ---
> fs/ecryptfs/crypto.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
> index f91db24bbf3b..a064b408d841 100644
> --- a/fs/ecryptfs/crypto.c
> +++ b/fs/ecryptfs/crypto.c
> @@ -311,8 +311,10 @@ static int crypt_scatterlist(struct ecryptfs_crypt_stat *crypt_stat,
> struct extent_crypt_result ecr;
> int rc = 0;
>
> - BUG_ON(!crypt_stat || !crypt_stat->tfm
> - || !(crypt_stat->flags & ECRYPTFS_STRUCT_INITIALIZED));
> + if (!crypt_stat || !crypt_stat->tfm
> + || !(crypt_stat->flags & ECRYPTFS_STRUCT_INITIALIZED))
> + return -EINVAL;
> +
> if (unlikely(ecryptfs_verbosity > 0)) {
> ecryptfs_printk(KERN_DEBUG, "Key size [%zd]; key:\n",
> crypt_stat->key_size);
> --
> 2.20.1
>

2020-02-14 18:05:28

by Aditya Pakki

[permalink] [raw]
Subject: Re: [PATCH] ecryptfs: replace BUG_ON with error handling code

On 2/14/20 11:38 AM, Tyler Hicks wrote:
> On 2019-12-15 11:24:04, Aditya Pakki wrote:
>> In crypt_scatterlist, if the crypt_stat argument is not set up
>> correctly, we avoid crashing, by returning the error upstream.
>> This patch performs the fix.
>>
>> Signed-off-by: Aditya Pakki <[email protected]>
>
> Hi Aditya - I wanted to check in to see if you are able to submit a new
> revision taking into account the feedback from Markus.
>
> Also, I'm curious if you've been able to hit this BUG_ON() or if you are
> just being proactive in cleaning up this function?
>
> Let me know if I can help you prepare a v2 of this patch. Thanks!
>
> Tyler
>
>> ---
>> fs/ecryptfs/crypto.c | 6 ++++--
>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
>> index f91db24bbf3b..a064b408d841 100644
>> --- a/fs/ecryptfs/crypto.c
>> +++ b/fs/ecryptfs/crypto.c
>> @@ -311,8 +311,10 @@ static int crypt_scatterlist(struct ecryptfs_crypt_stat *crypt_stat,
>> struct extent_crypt_result ecr;
>> int rc = 0;
>>
>> - BUG_ON(!crypt_stat || !crypt_stat->tfm
>> - || !(crypt_stat->flags & ECRYPTFS_STRUCT_INITIALIZED));
>> + if (!crypt_stat || !crypt_stat->tfm
>> + || !(crypt_stat->flags & ECRYPTFS_STRUCT_INITIALIZED))
>> + return -EINVAL;
>> +
>> if (unlikely(ecryptfs_verbosity > 0)) {
>> ecryptfs_printk(KERN_DEBUG, "Key size [%zd]; key:\n",
>> crypt_stat->key_size);
>> --
>> 2.20.1
>>

The bug was detected by a static analysis tool and have not encountered it. I can send a v2 right away.