IB/qib: Correct qib_verbs_register_sysfs() error handling
qib_verbs_register_sysfs() never cleans up from a failure. Additionally, the caller of qib_verbs_register_sysfs() doesn't return the correct "ret" value. This patch resolves both of those issues. Reported-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Reviewed-by: Dean Luick <dean.luick@intel.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
		
					parent
					
						
							
								137200a4bb
							
						
					
				
			
			
				commit
				
					
						c9bdad3c81
					
				
			
		
					 2 changed files with 7 additions and 2 deletions
				
			
		| 
						 | 
					@ -808,10 +808,14 @@ int qib_verbs_register_sysfs(struct qib_devdata *dd)
 | 
				
			||||||
	for (i = 0; i < ARRAY_SIZE(qib_attributes); ++i) {
 | 
						for (i = 0; i < ARRAY_SIZE(qib_attributes); ++i) {
 | 
				
			||||||
		ret = device_create_file(&dev->dev, qib_attributes[i]);
 | 
							ret = device_create_file(&dev->dev, qib_attributes[i]);
 | 
				
			||||||
		if (ret)
 | 
							if (ret)
 | 
				
			||||||
			return ret;
 | 
								goto bail;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
 | 
					bail:
 | 
				
			||||||
 | 
						for (i = 0; i < ARRAY_SIZE(qib_attributes); ++i)
 | 
				
			||||||
 | 
							device_remove_file(&dev->dev, qib_attributes[i]);
 | 
				
			||||||
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2234,7 +2234,8 @@ int qib_register_ib_device(struct qib_devdata *dd)
 | 
				
			||||||
	if (ret)
 | 
						if (ret)
 | 
				
			||||||
		goto err_agents;
 | 
							goto err_agents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (qib_verbs_register_sysfs(dd))
 | 
						ret = qib_verbs_register_sysfs(dd);
 | 
				
			||||||
 | 
						if (ret)
 | 
				
			||||||
		goto err_class;
 | 
							goto err_class;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	goto bail;
 | 
						goto bail;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue