Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'driver-core-6.2-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core

Pull driver core fixes from Greg KH:
"Here are three small driver and kernel core fixes for 6.2-rc5. They
include:

- potential gadget fixup in do_prlimit

- device property refcount leak fix

- test_async_probe bugfix for reported problem"

* tag 'driver-core-6.2-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
prlimit: do_prlimit needs to have a speculation check
driver core: Fix test_async_probe_init saves device in wrong array
device property: fix of node refcount leak in fwnode_graph_get_next_endpoint()

+15 -7
+12 -6
drivers/base/property.c
··· 997 997 fwnode_graph_get_next_endpoint(const struct fwnode_handle *fwnode, 998 998 struct fwnode_handle *prev) 999 999 { 1000 + struct fwnode_handle *ep, *port_parent = NULL; 1000 1001 const struct fwnode_handle *parent; 1001 - struct fwnode_handle *ep; 1002 1002 1003 1003 /* 1004 1004 * If this function is in a loop and the previous iteration returned 1005 1005 * an endpoint from fwnode->secondary, then we need to use the secondary 1006 1006 * as parent rather than @fwnode. 1007 1007 */ 1008 - if (prev) 1009 - parent = fwnode_graph_get_port_parent(prev); 1010 - else 1008 + if (prev) { 1009 + port_parent = fwnode_graph_get_port_parent(prev); 1010 + parent = port_parent; 1011 + } else { 1011 1012 parent = fwnode; 1013 + } 1012 1014 if (IS_ERR_OR_NULL(parent)) 1013 1015 return NULL; 1014 1016 1015 1017 ep = fwnode_call_ptr_op(parent, graph_get_next_endpoint, prev); 1016 1018 if (ep) 1017 - return ep; 1019 + goto out_put_port_parent; 1018 1020 1019 - return fwnode_graph_get_next_endpoint(parent->secondary, NULL); 1021 + ep = fwnode_graph_get_next_endpoint(parent->secondary, NULL); 1022 + 1023 + out_put_port_parent: 1024 + fwnode_handle_put(port_parent); 1025 + return ep; 1020 1026 } 1021 1027 EXPORT_SYMBOL_GPL(fwnode_graph_get_next_endpoint); 1022 1028
+1 -1
drivers/base/test/test_async_driver_probe.c
··· 145 145 calltime = ktime_get(); 146 146 for_each_online_cpu(cpu) { 147 147 nid = cpu_to_node(cpu); 148 - pdev = &sync_dev[sync_id]; 148 + pdev = &async_dev[async_id]; 149 149 150 150 *pdev = test_platform_device_register_node("test_async_driver", 151 151 async_id,
+2
kernel/sys.c
··· 1442 1442 1443 1443 if (resource >= RLIM_NLIMITS) 1444 1444 return -EINVAL; 1445 + resource = array_index_nospec(resource, RLIM_NLIMITS); 1446 + 1445 1447 if (new_rlim) { 1446 1448 if (new_rlim->rlim_cur > new_rlim->rlim_max) 1447 1449 return -EINVAL;