soc: ti: fix max dup length for kstrndup
authorMa Shimiao <mashimiao.fnst@cn.fujitsu.com>
Sat, 16 Dec 2017 22:45:33 +0000 (14:45 -0800)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Sat, 16 Dec 2017 22:45:33 +0000 (14:45 -0800)
If source string longer than max, kstrndup will alloc max+1 space.
So, we should make sure the result will not over limit.

Signed-off-by: Ma Shimiao <mashimiao.fnst@cn.fujitsu.com>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
drivers/soc/ti/knav_qmss_queue.c

index 39225de..77d6b5c 100644 (file)
@@ -225,7 +225,7 @@ static struct knav_queue *__knav_queue_open(struct knav_queue_inst *inst,
        if (!knav_queue_is_busy(inst)) {
                struct knav_range_info *range = inst->range;
 
-               inst->name = kstrndup(name, KNAV_NAME_SIZE, GFP_KERNEL);
+               inst->name = kstrndup(name, KNAV_NAME_SIZE - 1, GFP_KERNEL);
                if (range->ops && range->ops->open_queue)
                        ret = range->ops->open_queue(range, inst, flags);
 
@@ -779,7 +779,7 @@ void *knav_pool_create(const char *name,
                goto err;
        }
 
-       pool->name = kstrndup(name, KNAV_NAME_SIZE, GFP_KERNEL);
+       pool->name = kstrndup(name, KNAV_NAME_SIZE - 1, GFP_KERNEL);
        pool->kdev = kdev;
        pool->dev = kdev->dev;