mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-02 14:40:13 +01:00
device: ensure @error always set by nm_device_factory_new_link
https://bugzilla.redhat.com/show_bug.cgi?id=1325631
(backported from commit c5d827057e)
This commit is contained in:
parent
a72dd80a94
commit
5f8ae4e1e5
2 changed files with 21 additions and 3 deletions
|
|
@ -88,12 +88,17 @@ nm_device_factory_new_link (NMDeviceFactory *factory,
|
|||
const NMLinkType *link_types = NULL;
|
||||
const char **setting_types = NULL;
|
||||
int i;
|
||||
NMDevice *device;
|
||||
gboolean ignore = FALSE;
|
||||
|
||||
g_return_val_if_fail (factory != NULL, NULL);
|
||||
g_return_val_if_fail (plink != NULL, NULL);
|
||||
|
||||
/* Ensure the factory can create interfaces for this connection */
|
||||
nm_device_factory_get_supported_types (factory, &link_types, &setting_types);
|
||||
|
||||
NM_SET_OUT (out_ignore, FALSE);
|
||||
|
||||
for (i = 0; link_types[i] > NM_LINK_TYPE_UNKNOWN; i++) {
|
||||
if (plink->type == link_types[i])
|
||||
break;
|
||||
|
|
@ -115,7 +120,21 @@ nm_device_factory_new_link (NMDeviceFactory *factory,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
return interface->new_link (factory, plink, out_ignore, error);
|
||||
device = interface->new_link (factory, plink, &ignore, error);
|
||||
NM_SET_OUT (out_ignore, ignore);
|
||||
|
||||
if (!device && error && !*error) {
|
||||
if (ignore) {
|
||||
g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED,
|
||||
"Device factory %s ignores device",
|
||||
G_OBJECT_TYPE_NAME (factory));
|
||||
} else {
|
||||
g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_FAILED,
|
||||
"Device factory %s failed to create device",
|
||||
G_OBJECT_TYPE_NAME (factory));
|
||||
}
|
||||
}
|
||||
return device;
|
||||
}
|
||||
|
||||
NMDevice *
|
||||
|
|
|
|||
|
|
@ -1936,7 +1936,6 @@ platform_link_added (NMManager *self,
|
|||
{
|
||||
NMDeviceFactory *factory;
|
||||
NMDevice *device = NULL;
|
||||
GError *error = NULL;
|
||||
|
||||
g_return_if_fail (ifindex > 0);
|
||||
|
||||
|
|
@ -1947,13 +1946,13 @@ platform_link_added (NMManager *self,
|
|||
factory = nm_device_factory_manager_find_factory_for_link_type (plink->type);
|
||||
if (factory) {
|
||||
gboolean ignore = FALSE;
|
||||
gs_free_error GError *error = NULL;
|
||||
|
||||
device = nm_device_factory_new_link (factory, plink, &ignore, &error);
|
||||
if (!device) {
|
||||
if (!ignore) {
|
||||
nm_log_warn (LOGD_HW, "%s: factory failed to create device: %s",
|
||||
plink->name, error->message);
|
||||
g_clear_error (&error);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue