[Accel-config] Re: [PATCH] accel-config: Fix a read buffer length bug

Ramesh Thomas <ramesh.thomas at intel.com> Wed, 02 Feb 2022 17:02:52 -0800
Newsgroups dev.linux.lists.accel-config
Message-ID <[email protected]>
On 2/2/2022 3:26 PM, Dave Jiang wrote:
> 
> On 2/2/2022 3:50 PM, Ramesh Thomas wrote:
>> Generic function used to read a string attribute was using a buffer of
>> max length 64. Attributes like op_cap exceeds that size. Change read
>> buffer length to 128. Also removed a redundant memory allocation.
> 
> For sysfs attributes, max buffer size is 4k (a page). Probably should 
> make all reads from sysfs to be that size?

Yes, it should match the driver buffer size.

> 
> 
>> Signed-off-by: Ramesh Thomas <ramesh.thomas(a)intel.com>
>> ---
>>   accfg/lib/libaccfg.c | 14 ++------------
>>   1 file changed, 2 insertions(+), 12 deletions(-)
>>
>> diff --git a/accfg/lib/libaccfg.c b/accfg/lib/libaccfg.c
>> index 9cdd8f8..f20706c 100644
>> --- a/accfg/lib/libaccfg.c
>> +++ b/accfg/lib/libaccfg.c
>> @@ -247,13 +247,13 @@ static uint64_t accfg_get_param_unsigned_llong(
>>   static char *accfg_get_param_str(struct accfg_ctx *ctx, int dfd, 
>> char *name)
>>   {
>>       int fd = openat(dfd, name, O_RDONLY);
>> -    char buf[MAX_PARAM_LEN + 1];
>> +    char buf[MAX_BUF_LEN + 1];
>>       int n;
>>       if (fd == -1)
>>           return NULL;
>> -    n = read(fd, buf, MAX_PARAM_LEN);
>> +    n = read(fd, buf, MAX_BUF_LEN);
>>       close(fd);
>>       if (n <= 0)
>>           return NULL;
>> @@ -618,21 +618,13 @@ static void *add_device(void *parent, int id, 
>> const char *ctl_base,
>>   {
>>       struct accfg_ctx *ctx = parent;
>>       struct accfg_device *device;
>> -    char *path;
>>       int dfd;
>>       int rc;
>>       char *p;
>> -    path = calloc(1, strlen(ctl_base) + MAX_PARAM_LEN);
>> -    if (!path) {
>> -        err(ctx, "%s: allocation of path failed\n", __func__);
>> -        return NULL;
>> -    }
>> -
>>       dfd = open(ctl_base, O_PATH);
>>       if (dfd == -1) {
>>           err(ctx, "%s open failed: %s\n", __func__, strerror(errno));
>> -        free(path);
>>           return NULL;
>>       }
>> @@ -720,7 +712,6 @@ static void *add_device(void *parent, int id, 
>> const char *ctl_base,
>>           goto err_dev_path;
>>       list_add_tail(&ctx->devices, &device->list);
>> -    free(path);
>>       return device;
>> @@ -730,7 +721,6 @@ err_read:
>>       free(device->mdev_path);
>>       free(device);
>>   err_device:
>> -    free(path);
>>       return NULL;
>>   }