@@ -207,11 +207,10 @@ static int alpine_msix_init_domains(struct alpine_msix_data *priv, struct device
207207
208208static int alpine_msix_init (struct device_node * node , struct device_node * parent )
209209{
210- struct alpine_msix_data * priv ;
210+ struct alpine_msix_data * priv __free ( kfree ) = kzalloc ( sizeof ( * priv ), GFP_KERNEL ) ;
211211 struct resource res ;
212212 int ret ;
213213
214- priv = kzalloc (sizeof (* priv ), GFP_KERNEL );
215214 if (!priv )
216215 return - ENOMEM ;
217216
@@ -220,7 +219,7 @@ static int alpine_msix_init(struct device_node *node, struct device_node *parent
220219 ret = of_address_to_resource (node , 0 , & res );
221220 if (ret ) {
222221 pr_err ("Failed to allocate resource\n" );
223- goto err_priv ;
222+ return ret ;
224223 }
225224
226225 /*
@@ -235,34 +234,28 @@ static int alpine_msix_init(struct device_node *node, struct device_node *parent
235234
236235 if (of_property_read_u32 (node , "al,msi-base-spi" , & priv -> spi_first )) {
237236 pr_err ("Unable to parse MSI base\n" );
238- ret = - EINVAL ;
239- goto err_priv ;
237+ return - EINVAL ;
240238 }
241239
242240 if (of_property_read_u32 (node , "al,msi-num-spis" , & priv -> num_spis )) {
243241 pr_err ("Unable to parse MSI numbers\n" );
244- ret = - EINVAL ;
245- goto err_priv ;
242+ return - EINVAL ;
246243 }
247244
248- priv -> msi_map = bitmap_zalloc (priv -> num_spis , GFP_KERNEL );
249- if (! priv -> msi_map ) {
250- ret = - ENOMEM ;
251- goto err_priv ;
252- }
245+ unsigned long * msi_map __free ( kfree ) = bitmap_zalloc (priv -> num_spis , GFP_KERNEL );
246+
247+ if (! msi_map )
248+ return - ENOMEM ;
249+ priv -> msi_map = msi_map ;
253250
254251 pr_debug ("Registering %d msixs, starting at %d\n" , priv -> num_spis , priv -> spi_first );
255252
256253 ret = alpine_msix_init_domains (priv , node );
257254 if (ret )
258- goto err_map ;
255+ return ret ;
259256
257+ retain_and_null_ptr (priv );
258+ retain_and_null_ptr (msi_map );
260259 return 0 ;
261-
262- err_map :
263- bitmap_free (priv -> msi_map );
264- err_priv :
265- kfree (priv );
266- return ret ;
267260}
268261IRQCHIP_DECLARE (alpine_msix , "al,alpine-msix" , alpine_msix_init );
0 commit comments