Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 172d934c authored by Andrzej Pietrasiewicz's avatar Andrzej Pietrasiewicz Committed by Greg Kroah-Hartman
Browse files

usb/gadget: free opts struct on error recovery



Fix memory leaks introduced in commits:

40d133d7
usb: gadget: f_ncm: convert to new function interface with backward compatibility

fee562a6
usb: gadget: f_ecm: convert to new function interface with backward compatibility

fcbdf12e
usb: gadget: f_phonet: convert to new function interface with backward compatibility

b29002a1
usb: gadget: f_eem: convert to new function interface with backward compatibility

8cedba7c
usb: gadget: f_subset: convert to new function interface with backward compatibility

f466c635
usb: gadget: f_rndis: convert to new function interface with backward compatibility

Signed-off-by: default avatarAndrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5f8a2e68
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -959,8 +959,11 @@ static struct usb_function_instance *ecm_alloc_inst(void)
	mutex_init(&opts->lock);
	opts->func_inst.free_func_inst = ecm_free_inst;
	opts->net = gether_setup_default();
	if (IS_ERR(opts->net))
		return ERR_PTR(PTR_ERR(opts->net));
	if (IS_ERR(opts->net)) {
		struct net_device *net = opts->net;
		kfree(opts);
		return ERR_CAST(net);
	}

	config_group_init_type_name(&opts->func_inst.group, "", &ecm_func_type);

+5 −2
Original line number Diff line number Diff line
@@ -593,8 +593,11 @@ static struct usb_function_instance *eem_alloc_inst(void)
	mutex_init(&opts->lock);
	opts->func_inst.free_func_inst = eem_free_inst;
	opts->net = gether_setup_default();
	if (IS_ERR(opts->net))
		return ERR_CAST(opts->net);
	if (IS_ERR(opts->net)) {
		struct net_device *net = opts->net;
		kfree(opts);
		return ERR_CAST(net);
	}

	config_group_init_type_name(&opts->func_inst.group, "", &eem_func_type);

+5 −2
Original line number Diff line number Diff line
@@ -1350,8 +1350,11 @@ static struct usb_function_instance *ncm_alloc_inst(void)
	mutex_init(&opts->lock);
	opts->func_inst.free_func_inst = ncm_free_inst;
	opts->net = gether_setup_default();
	if (IS_ERR(opts->net))
		return ERR_PTR(PTR_ERR(opts->net));
	if (IS_ERR(opts->net)) {
		struct net_device *net = opts->net;
		kfree(opts);
		return ERR_CAST(net);
	}

	config_group_init_type_name(&opts->func_inst.group, "", &ncm_func_type);

+5 −2
Original line number Diff line number Diff line
@@ -656,8 +656,11 @@ static struct usb_function_instance *phonet_alloc_inst(void)

	opts->func_inst.free_func_inst = phonet_free_inst;
	opts->net = gphonet_setup_default();
	if (IS_ERR(opts->net))
		return ERR_PTR(PTR_ERR(opts->net));
	if (IS_ERR(opts->net)) {
		struct net_device *net = opts->net;
		kfree(opts);
		return ERR_CAST(net);
	}

	config_group_init_type_name(&opts->func_inst.group, "",
			&phonet_func_type);
+5 −2
Original line number Diff line number Diff line
@@ -963,8 +963,11 @@ static struct usb_function_instance *rndis_alloc_inst(void)
	mutex_init(&opts->lock);
	opts->func_inst.free_func_inst = rndis_free_inst;
	opts->net = gether_setup_default();
	if (IS_ERR(opts->net))
		return ERR_CAST(opts->net);
	if (IS_ERR(opts->net)) {
		struct net_device *net = opts->net;
		kfree(opts);
		return ERR_CAST(net);
	}

	config_group_init_type_name(&opts->func_inst.group, "",
				    &rndis_func_type);
Loading