Skip to contentSkip to conversation

rdmacg: Convert to use match_string() helper

PATCH New Andy Shevchenko 2 participants 2 messages May 3, 2018 cgroup

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 rdmacg: Convert to use match_string() helper

The new helper returns index of the matching string in an array. We are going to use it here.

---
 kernel/cgroup/rdma.c | 33 +++++++++++++++------------------
 1 file changed, 15 insertions(+), 18 deletions(-)
kernel/cgroup/rdma.c +15 -18
index defad3c5e7dc..29697d2d0e85 100644
@@ -362,10 +362,9 @@ EXPORT_SYMBOL(rdmacg_unregister_device);
 static int parse_resource(char *c, int *intval)
 {
 	substring_t argstr;
-	const char **table = &rdmacg_resource_names[0];
 	char *name, *value = c;
 	size_t len;
-	int ret, i = 0;
+	int ret, i;
 
 	name = strsep(&value, "=");
 	if (!name || !value)
@@ -373,24 +372,22 @@ static int parse_resource(char *c, int *intval)
 
 	len = strlen(value);
 
-	for (i = 0; i < RDMACG_RESOURCE_MAX; i++) {
-		if (strcmp(table[i], name))
-			continue;
+	i = match_string(rdmacg_resource_names, RDMACG_RESOURCE_MAX, name);
+	if (i < 0)
+		return i;
 
-		argstr.from = value;
-		argstr.to = value + len;
+	argstr.from = value;
+	argstr.to = value + len;
 
-		ret = match_int(&argstr, intval);
-		if (ret >= 0) {
-			if (*intval < 0)
-				break;
-			return i;
-		}
-		if (strncmp(value, RDMACG_MAX_STR, len) == 0) {
-			*intval = S32_MAX;
-			return i;
-		}
-		break;
+	ret = match_int(&argstr, intval);
+	if (ret >= 0) {
+		if (*intval < 0)
+			break;
+		return i;
+	}
+	if (strncmp(value, RDMACG_MAX_STR, len) == 0) {
+		*intval = S32_MAX;
+		return i;
 	}
 	return -EINVAL;
 }
Signature · 1 line
2.17.0
#1 lore raw
I love your patch! Yet something to improve:

Hi Andy,

I love your patch! Yet something to improve:

[auto build test ERROR on cgroup/for-next]
[also build test ERROR on v4.17-rc3 next-20180503]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Andy-Shevchenko/rdmacg-Convert-to-use-match_string-helper/20180504-060313
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git for-next
config: x86_64-randconfig-x010-201817 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

kernel/cgroup/rdma.c: In function 'parse_resource':

>> kernel/cgroup/rdma.c:385:4: error: break statement not within loop or switch
       break;
       ^~~~~

vim +385 kernel/cgroup/rdma.c

39d3e758 Parav Pandit    2017-01-10  361  
39d3e758 Parav Pandit    2017-01-10  362  static int parse_resource(char *c, int *intval)
39d3e758 Parav Pandit    2017-01-10  363  {
39d3e758 Parav Pandit    2017-01-10  364  	substring_t argstr;
39d3e758 Parav Pandit    2017-01-10  365  	char *name, *value = c;
39d3e758 Parav Pandit    2017-01-10  366  	size_t len;
9022ddfd Andy Shevchenko 2018-05-03  367  	int ret, i;
39d3e758 Parav Pandit    2017-01-10  368  
39d3e758 Parav Pandit    2017-01-10  369  	name = strsep(&value, "=");
39d3e758 Parav Pandit    2017-01-10  370  	if (!name || !value)
39d3e758 Parav Pandit    2017-01-10  371  		return -EINVAL;
39d3e758 Parav Pandit    2017-01-10  372  
39d3e758 Parav Pandit    2017-01-10  373  	len = strlen(value);
39d3e758 Parav Pandit    2017-01-10  374  
9022ddfd Andy Shevchenko 2018-05-03  375  	i = match_string(rdmacg_resource_names, RDMACG_RESOURCE_MAX, name);
9022ddfd Andy Shevchenko 2018-05-03  376  	if (i < 0)
9022ddfd Andy Shevchenko 2018-05-03  377  		return i;
39d3e758 Parav Pandit    2017-01-10  378  
39d3e758 Parav Pandit    2017-01-10  379  	argstr.from = value;
39d3e758 Parav Pandit    2017-01-10  380  	argstr.to = value + len;
39d3e758 Parav Pandit    2017-01-10  381  
39d3e758 Parav Pandit    2017-01-10  382  	ret = match_int(&argstr, intval);
39d3e758 Parav Pandit    2017-01-10  383  	if (ret >= 0) {
39d3e758 Parav Pandit    2017-01-10  384  		if (*intval < 0)
39d3e758 Parav Pandit    2017-01-10 @385  			break;
39d3e758 Parav Pandit    2017-01-10  386  		return i;
39d3e758 Parav Pandit    2017-01-10  387  	}
39d3e758 Parav Pandit    2017-01-10  388  	if (strncmp(value, RDMACG_MAX_STR, len) == 0) {
39d3e758 Parav Pandit    2017-01-10  389  		*intval = S32_MAX;
39d3e758 Parav Pandit    2017-01-10  390  		return i;
39d3e758 Parav Pandit    2017-01-10  391  	}
39d3e758 Parav Pandit    2017-01-10  392  	return -EINVAL;
39d3e758 Parav Pandit    2017-01-10  393  }
39d3e758 Parav Pandit    2017-01-10  394  

:::::: The code at line 385 was first introduced by commit
:::::: 39d3e7584a686541a3295ff1624d341e669e1afc rdmacg: Added rdma cgroup controller

:::::: TO: Parav Pandit <[email protected]> :::::: CC: Tejun Heo <[email protected]>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation