diff options
-rw-r--r-- | MAINTAINERS | 2 | ||||
-rw-r--r-- | drivers/hid/usbhid/hid-core.c | 5 | ||||
-rw-r--r-- | drivers/hid/usbhid/hid-quirks.c | 138 | ||||
-rw-r--r-- | include/linux/sched.h | 24 | ||||
-rw-r--r-- | include/linux/topology.h | 1 | ||||
-rw-r--r-- | include/net/netlabel.h | 2 | ||||
-rw-r--r-- | kernel/sched.c | 193 | ||||
-rw-r--r-- | kernel/sched_debug.c | 22 | ||||
-rw-r--r-- | kernel/sched_fair.c | 21 | ||||
-rw-r--r-- | kernel/sched_rt.c | 14 | ||||
-rw-r--r-- | kernel/sched_stats.h | 2 | ||||
-rw-r--r-- | net/netlabel/netlabel_user.c | 4 | ||||
-rw-r--r-- | net/xfrm/xfrm_policy.c | 5 | ||||
-rw-r--r-- | security/selinux/hooks.c | 3 | ||||
-rw-r--r-- | security/selinux/netlabel.c | 16 |
15 files changed, 296 insertions, 156 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 1e15a0edc313..e65e96a14bec 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -3754,7 +3754,7 @@ L: linux-usb-devel@lists.sourceforge.net | |||
3754 | W: http://www.linux-usb.org/gadget | 3754 | W: http://www.linux-usb.org/gadget |
3755 | S: Maintained | 3755 | S: Maintained |
3756 | 3756 | ||
3757 | USB HID/HIDBP DRIVERS | 3757 | USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...) |
3758 | P: Jiri Kosina | 3758 | P: Jiri Kosina |
3759 | M: jkosina@suse.cz | 3759 | M: jkosina@suse.cz |
3760 | L: linux-usb-devel@lists.sourceforge.net | 3760 | L: linux-usb-devel@lists.sourceforge.net |
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index b2baeaeba9be..0a1f2b52a12f 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c | |||
@@ -743,7 +743,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) | |||
743 | hid->quirks = quirks; | 743 | hid->quirks = quirks; |
744 | 744 | ||
745 | if (!(usbhid = kzalloc(sizeof(struct usbhid_device), GFP_KERNEL))) | 745 | if (!(usbhid = kzalloc(sizeof(struct usbhid_device), GFP_KERNEL))) |
746 | goto fail; | 746 | goto fail_no_usbhid; |
747 | 747 | ||
748 | hid->driver_data = usbhid; | 748 | hid->driver_data = usbhid; |
749 | usbhid->hid = hid; | 749 | usbhid->hid = hid; |
@@ -878,6 +878,8 @@ fail: | |||
878 | usb_free_urb(usbhid->urbout); | 878 | usb_free_urb(usbhid->urbout); |
879 | usb_free_urb(usbhid->urbctrl); | 879 | usb_free_urb(usbhid->urbctrl); |
880 | hid_free_buffers(dev, hid); | 880 | hid_free_buffers(dev, hid); |
881 | kfree(usbhid); | ||
882 | fail_no_usbhid: | ||
881 | hid_free_device(hid); | 883 | hid_free_device(hid); |
882 | 884 | ||
883 | return NULL; | 885 | return NULL; |
@@ -913,6 +915,7 @@ static void hid_disconnect(struct usb_interface *intf) | |||
913 | usb_free_urb(usbhid->urbout); | 915 | usb_free_urb(usbhid->urbout); |
914 | 916 | ||
915 | hid_free_buffers(hid_to_usb_dev(hid), hid); | 917 | hid_free_buffers(hid_to_usb_dev(hid), hid); |
918 | kfree(usbhid); | ||
916 | hid_free_device(hid); | 919 | hid_free_device(hid); |
917 | } | 920 | } |
918 | 921 | ||
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c index 775b9f3b8ce3..6b21a214f419 100644 --- a/drivers/hid/usbhid/hid-quirks.c +++ b/drivers/hid/usbhid/hid-quirks.c | |||
@@ -61,7 +61,9 @@ | |||
61 | #define USB_DEVICE_ID_APPLE_GEYSER4_JIS 0x021c | 61 | #define USB_DEVICE_ID_APPLE_GEYSER4_JIS 0x021c |
62 | #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a | 62 | #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a |
63 | #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b | 63 | #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b |
64 | #define USB_DEVICE_ID_APPLE_IR 0x8240 | 64 | |
65 | #define USB_VENDOR_ID_ASUS 0x0b05 | ||
66 | #define USB_DEVICE_ID_ASUS_LCM 0x1726 | ||
65 | 67 | ||
66 | #define USB_VENDOR_ID_ATEN 0x0557 | 68 | #define USB_VENDOR_ID_ATEN 0x0557 |
67 | #define USB_DEVICE_ID_ATEN_UC100KM 0x2004 | 69 | #define USB_DEVICE_ID_ATEN_UC100KM 0x2004 |
@@ -198,6 +200,70 @@ | |||
198 | 200 | ||
199 | #define USB_VENDOR_ID_LOGITECH 0x046d | 201 | #define USB_VENDOR_ID_LOGITECH 0x046d |
200 | #define USB_DEVICE_ID_LOGITECH_RECEIVER 0xc101 | 202 | #define USB_DEVICE_ID_LOGITECH_RECEIVER 0xc101 |
203 | #define USB_DEVICE_ID_LOGITECH_HARMONY 0xc110 | ||
204 | #define USB_DEVICE_ID_LOGITECH_HARMONY_2 0xc111 | ||
205 | #define USB_DEVICE_ID_LOGITECH_HARMONY_3 0xc112 | ||
206 | #define USB_DEVICE_ID_LOGITECH_HARMONY_4 0xc113 | ||
207 | #define USB_DEVICE_ID_LOGITECH_HARMONY_5 0xc114 | ||
208 | #define USB_DEVICE_ID_LOGITECH_HARMONY_6 0xc115 | ||
209 | #define USB_DEVICE_ID_LOGITECH_HARMONY_7 0xc116 | ||
210 | #define USB_DEVICE_ID_LOGITECH_HARMONY_8 0xc117 | ||
211 | #define USB_DEVICE_ID_LOGITECH_HARMONY_9 0xc118 | ||
212 | #define USB_DEVICE_ID_LOGITECH_HARMONY_10 0xc119 | ||
213 | #define USB_DEVICE_ID_LOGITECH_HARMONY_11 0xc11a | ||
214 | #define USB_DEVICE_ID_LOGITECH_HARMONY_12 0xc11b | ||
215 | #define USB_DEVICE_ID_LOGITECH_HARMONY_13 0xc11c | ||
216 | #define USB_DEVICE_ID_LOGITECH_HARMONY_14 0xc11d | ||
217 | #define USB_DEVICE_ID_LOGITECH_HARMONY_15 0xc11e | ||
218 | #define USB_DEVICE_ID_LOGITECH_HARMONY_16 0xc11f | ||
219 | #define USB_DEVICE_ID_LOGITECH_HARMONY_17 0xc120 | ||
220 | #define USB_DEVICE_ID_LOGITECH_HARMONY_18 0xc121 | ||
221 | #define USB_DEVICE_ID_LOGITECH_HARMONY_19 0xc122 | ||
222 | #define USB_DEVICE_ID_LOGITECH_HARMONY_20 0xc123 | ||
223 | #define USB_DEVICE_ID_LOGITECH_HARMONY_21 0xc124 | ||
224 | #define USB_DEVICE_ID_LOGITECH_HARMONY_22 0xc125 | ||
225 | #define USB_DEVICE_ID_LOGITECH_HARMONY_23 0xc126 | ||
226 | #define USB_DEVICE_ID_LOGITECH_HARMONY_24 0xc127 | ||
227 | #define USB_DEVICE_ID_LOGITECH_HARMONY_25 0xc128 | ||
228 | #define USB_DEVICE_ID_LOGITECH_HARMONY_26 0xc129 | ||
229 | #define USB_DEVICE_ID_LOGITECH_HARMONY_27 0xc12a | ||
230 | #define USB_DEVICE_ID_LOGITECH_HARMONY_28 0xc12b | ||
231 | #define USB_DEVICE_ID_LOGITECH_HARMONY_29 0xc12c | ||
232 | #define USB_DEVICE_ID_LOGITECH_HARMONY_30 0xc12d | ||
233 | #define USB_DEVICE_ID_LOGITECH_HARMONY_31 0xc12e | ||
234 | #define USB_DEVICE_ID_LOGITECH_HARMONY_32 0xc12f | ||
235 | #define USB_DEVICE_ID_LOGITECH_HARMONY_33 0xc130 | ||
236 | #define USB_DEVICE_ID_LOGITECH_HARMONY_34 0xc131 | ||
237 | #define USB_DEVICE_ID_LOGITECH_HARMONY_35 0xc132 | ||
238 | #define USB_DEVICE_ID_LOGITECH_HARMONY_36 0xc133 | ||
239 | #define USB_DEVICE_ID_LOGITECH_HARMONY_37 0xc134 | ||
240 | #define USB_DEVICE_ID_LOGITECH_HARMONY_38 0xc135 | ||
241 | #define USB_DEVICE_ID_LOGITECH_HARMONY_39 0xc136 | ||
242 | #define USB_DEVICE_ID_LOGITECH_HARMONY_40 0xc137 | ||
243 | #define USB_DEVICE_ID_LOGITECH_HARMONY_41 0xc138 | ||
244 | #define USB_DEVICE_ID_LOGITECH_HARMONY_42 0xc139 | ||
245 | #define USB_DEVICE_ID_LOGITECH_HARMONY_43 0xc13a | ||
246 | #define USB_DEVICE_ID_LOGITECH_HARMONY_44 0xc13b | ||
247 | #define USB_DEVICE_ID_LOGITECH_HARMONY_45 0xc13c | ||
248 | #define USB_DEVICE_ID_LOGITECH_HARMONY_46 0xc13d | ||
249 | #define USB_DEVICE_ID_LOGITECH_HARMONY_47 0xc13e | ||
250 | #define USB_DEVICE_ID_LOGITECH_HARMONY_48 0xc13f | ||
251 | #define USB_DEVICE_ID_LOGITECH_HARMONY_49 0xc140 | ||
252 | #define USB_DEVICE_ID_LOGITECH_HARMONY_50 0xc141 | ||
253 | #define USB_DEVICE_ID_LOGITECH_HARMONY_51 0xc142 | ||
254 | #define USB_DEVICE_ID_LOGITECH_HARMONY_52 0xc143 | ||
255 | #define USB_DEVICE_ID_LOGITECH_HARMONY_53 0xc144 | ||
256 | #define USB_DEVICE_ID_LOGITECH_HARMONY_54 0xc145 | ||
257 | #define USB_DEVICE_ID_LOGITECH_HARMONY_55 0xc146 | ||
258 | #define USB_DEVICE_ID_LOGITECH_HARMONY_56 0xc147 | ||
259 | #define USB_DEVICE_ID_LOGITECH_HARMONY_57 0xc148 | ||
260 | #define USB_DEVICE_ID_LOGITECH_HARMONY_58 0xc149 | ||
261 | #define USB_DEVICE_ID_LOGITECH_HARMONY_59 0xc14a | ||
262 | #define USB_DEVICE_ID_LOGITECH_HARMONY_60 0xc14b | ||
263 | #define USB_DEVICE_ID_LOGITECH_HARMONY_61 0xc14c | ||
264 | #define USB_DEVICE_ID_LOGITECH_HARMONY_62 0xc14d | ||
265 | #define USB_DEVICE_ID_LOGITECH_HARMONY_63 0xc14e | ||
266 | #define USB_DEVICE_ID_LOGITECH_HARMONY_64 0xc14f | ||
201 | #define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294 | 267 | #define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294 |
202 | #define USB_DEVICE_ID_LOGITECH_KBD 0xc311 | 268 | #define USB_DEVICE_ID_LOGITECH_KBD 0xc311 |
203 | #define USB_DEVICE_ID_S510_RECEIVER 0xc50c | 269 | #define USB_DEVICE_ID_S510_RECEIVER 0xc50c |
@@ -221,6 +287,9 @@ | |||
221 | #define USB_DEVICE_ID_NCR_FIRST 0x0300 | 287 | #define USB_DEVICE_ID_NCR_FIRST 0x0300 |
222 | #define USB_DEVICE_ID_NCR_LAST 0x03ff | 288 | #define USB_DEVICE_ID_NCR_LAST 0x03ff |
223 | 289 | ||
290 | #define USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR 0x0400 | ||
291 | #define USB_DEVICE_ID_N_S_HARMONY 0xc359 | ||
292 | |||
224 | #define USB_VENDOR_ID_NEC 0x073e | 293 | #define USB_VENDOR_ID_NEC 0x073e |
225 | #define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301 | 294 | #define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301 |
226 | 295 | ||
@@ -315,7 +384,7 @@ static const struct hid_blacklist { | |||
315 | { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24, HID_QUIRK_IGNORE }, | 384 | { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24, HID_QUIRK_IGNORE }, |
316 | { USB_VENDOR_ID_AIRCABLE, USB_DEVICE_ID_AIRCABLE1, HID_QUIRK_IGNORE }, | 385 | { USB_VENDOR_ID_AIRCABLE, USB_DEVICE_ID_AIRCABLE1, HID_QUIRK_IGNORE }, |
317 | { USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232, HID_QUIRK_IGNORE }, | 386 | { USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232, HID_QUIRK_IGNORE }, |
318 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IR, HID_QUIRK_IGNORE }, | 387 | { USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_LCM, HID_QUIRK_IGNORE}, |
319 | { USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD, HID_QUIRK_IGNORE }, | 388 | { USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD, HID_QUIRK_IGNORE }, |
320 | { USB_VENDOR_ID_CIDC, 0x0103, HID_QUIRK_IGNORE }, | 389 | { USB_VENDOR_ID_CIDC, 0x0103, HID_QUIRK_IGNORE }, |
321 | { USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_HIDCOM, HID_QUIRK_IGNORE }, | 390 | { USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_HIDCOM, HID_QUIRK_IGNORE }, |
@@ -463,6 +532,71 @@ static const struct hid_blacklist { | |||
463 | 532 | ||
464 | { USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658, HID_QUIRK_RESET_LEDS }, | 533 | { USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658, HID_QUIRK_RESET_LEDS }, |
465 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KBD, HID_QUIRK_RESET_LEDS }, | 534 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KBD, HID_QUIRK_RESET_LEDS }, |
535 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY, HID_QUIRK_IGNORE }, | ||
536 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_2, HID_QUIRK_IGNORE }, | ||
537 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_3, HID_QUIRK_IGNORE }, | ||
538 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_4, HID_QUIRK_IGNORE }, | ||
539 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_5, HID_QUIRK_IGNORE }, | ||
540 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_6, HID_QUIRK_IGNORE }, | ||
541 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_7, HID_QUIRK_IGNORE }, | ||
542 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_8, HID_QUIRK_IGNORE }, | ||
543 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_9, HID_QUIRK_IGNORE }, | ||
544 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_10, HID_QUIRK_IGNORE }, | ||
545 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_11, HID_QUIRK_IGNORE }, | ||
546 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_12, HID_QUIRK_IGNORE }, | ||
547 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_13, HID_QUIRK_IGNORE }, | ||
548 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_14, HID_QUIRK_IGNORE }, | ||
549 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_15, HID_QUIRK_IGNORE }, | ||
550 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_16, HID_QUIRK_IGNORE }, | ||
551 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_17, HID_QUIRK_IGNORE }, | ||
552 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_18, HID_QUIRK_IGNORE }, | ||
553 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_19, HID_QUIRK_IGNORE }, | ||
554 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_20, HID_QUIRK_IGNORE }, | ||
555 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_21, HID_QUIRK_IGNORE }, | ||
556 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_22, HID_QUIRK_IGNORE }, | ||
557 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_23, HID_QUIRK_IGNORE }, | ||
558 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_24, HID_QUIRK_IGNORE }, | ||
559 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_25, HID_QUIRK_IGNORE }, | ||
560 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_26, HID_QUIRK_IGNORE }, | ||
561 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_27, HID_QUIRK_IGNORE }, | ||
562 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_28, HID_QUIRK_IGNORE }, | ||
563 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_29, HID_QUIRK_IGNORE }, | ||
564 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_30, HID_QUIRK_IGNORE }, | ||
565 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_31, HID_QUIRK_IGNORE }, | ||
566 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_32, HID_QUIRK_IGNORE }, | ||
567 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_33, HID_QUIRK_IGNORE }, | ||
568 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_34, HID_QUIRK_IGNORE }, | ||
569 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_35, HID_QUIRK_IGNORE }, | ||
570 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_36, HID_QUIRK_IGNORE }, | ||
571 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_37, HID_QUIRK_IGNORE }, | ||
572 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_38, HID_QUIRK_IGNORE }, | ||
573 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_39, HID_QUIRK_IGNORE }, | ||
574 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_40, HID_QUIRK_IGNORE }, | ||
575 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_41, HID_QUIRK_IGNORE }, | ||
576 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_42, HID_QUIRK_IGNORE }, | ||
577 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_43, HID_QUIRK_IGNORE }, | ||
578 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_44, HID_QUIRK_IGNORE }, | ||
579 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_45, HID_QUIRK_IGNORE }, | ||
580 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_46, HID_QUIRK_IGNORE }, | ||
581 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_47, HID_QUIRK_IGNORE }, | ||
582 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_48, HID_QUIRK_IGNORE }, | ||
583 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_49, HID_QUIRK_IGNORE }, | ||
584 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_50, HID_QUIRK_IGNORE }, | ||
585 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_51, HID_QUIRK_IGNORE }, | ||
586 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_52, HID_QUIRK_IGNORE }, | ||
587 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_53, HID_QUIRK_IGNORE }, | ||
588 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_54, HID_QUIRK_IGNORE }, | ||
589 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_55, HID_QUIRK_IGNORE }, | ||
590 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_56, HID_QUIRK_IGNORE }, | ||
591 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_57, HID_QUIRK_IGNORE }, | ||
592 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_58, HID_QUIRK_IGNORE }, | ||
593 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_59, HID_QUIRK_IGNORE }, | ||
594 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_60, HID_QUIRK_IGNORE }, | ||
595 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_61, HID_QUIRK_IGNORE }, | ||
596 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_62, HID_QUIRK_IGNORE }, | ||
597 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_63, HID_QUIRK_IGNORE }, | ||
598 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_64, HID_QUIRK_IGNORE }, | ||
599 | { USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR, USB_DEVICE_ID_N_S_HARMONY, HID_QUIRK_IGNORE }, | ||
466 | 600 | ||
467 | { 0, 0 } | 601 | { 0, 0 } |
468 | }; | 602 | }; |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 2e490271acf6..17249fae5014 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -734,7 +734,6 @@ struct sched_domain { | |||
734 | unsigned long max_interval; /* Maximum balance interval ms */ | 734 | unsigned long max_interval; /* Maximum balance interval ms */ |
735 | unsigned int busy_factor; /* less balancing by factor if busy */ | 735 | unsigned int busy_factor; /* less balancing by factor if busy */ |
736 | unsigned int imbalance_pct; /* No balance until over watermark */ | 736 | unsigned int imbalance_pct; /* No balance until over watermark */ |
737 | unsigned long long cache_hot_time; /* Task considered cache hot (ns) */ | ||
738 | unsigned int cache_nice_tries; /* Leave cache hot tasks for # tries */ | 737 | unsigned int cache_nice_tries; /* Leave cache hot tasks for # tries */ |
739 | unsigned int busy_idx; | 738 | unsigned int busy_idx; |
740 | unsigned int idle_idx; | 739 | unsigned int idle_idx; |
@@ -875,7 +874,7 @@ struct sched_class { | |||
875 | 874 | ||
876 | void (*set_curr_task) (struct rq *rq); | 875 | void (*set_curr_task) (struct rq *rq); |
877 | void (*task_tick) (struct rq *rq, struct task_struct *p); | 876 | void (*task_tick) (struct rq *rq, struct task_struct *p); |
878 | void (*task_new) (struct rq *rq, struct task_struct *p); | 877 | void (*task_new) (struct rq *rq, struct task_struct *p, u64 now); |
879 | }; | 878 | }; |
880 | 879 | ||
881 | struct load_weight { | 880 | struct load_weight { |
@@ -905,23 +904,28 @@ struct sched_entity { | |||
905 | struct rb_node run_node; | 904 | struct rb_node run_node; |
906 | unsigned int on_rq; | 905 | unsigned int on_rq; |
907 | 906 | ||
907 | u64 exec_start; | ||
908 | u64 sum_exec_runtime; | ||
908 | u64 wait_start_fair; | 909 | u64 wait_start_fair; |
910 | u64 sleep_start_fair; | ||
911 | |||
912 | #ifdef CONFIG_SCHEDSTATS | ||
909 | u64 wait_start; | 913 | u64 wait_start; |
910 | u64 exec_start; | 914 | u64 wait_max; |
915 | s64 sum_wait_runtime; | ||
916 | |||
911 | u64 sleep_start; | 917 | u64 sleep_start; |
912 | u64 sleep_start_fair; | ||
913 | u64 block_start; | ||
914 | u64 sleep_max; | 918 | u64 sleep_max; |
919 | s64 sum_sleep_runtime; | ||
920 | |||
921 | u64 block_start; | ||
915 | u64 block_max; | 922 | u64 block_max; |
916 | u64 exec_max; | 923 | u64 exec_max; |
917 | u64 wait_max; | ||
918 | u64 last_ran; | ||
919 | 924 | ||
920 | u64 sum_exec_runtime; | ||
921 | s64 sum_wait_runtime; | ||
922 | s64 sum_sleep_runtime; | ||
923 | unsigned long wait_runtime_overruns; | 925 | unsigned long wait_runtime_overruns; |
924 | unsigned long wait_runtime_underruns; | 926 | unsigned long wait_runtime_underruns; |
927 | #endif | ||
928 | |||
925 | #ifdef CONFIG_FAIR_GROUP_SCHED | 929 | #ifdef CONFIG_FAIR_GROUP_SCHED |
926 | struct sched_entity *parent; | 930 | struct sched_entity *parent; |
927 | /* rq on which this entity is (to be) queued: */ | 931 | /* rq on which this entity is (to be) queued: */ |
diff --git a/include/linux/topology.h b/include/linux/topology.h index d0890a7e5bab..525d437b1253 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h | |||
@@ -185,7 +185,6 @@ | |||
185 | .max_interval = 64*num_online_cpus(), \ | 185 | .max_interval = 64*num_online_cpus(), \ |
186 | .busy_factor = 128, \ | 186 | .busy_factor = 128, \ |
187 | .imbalance_pct = 133, \ | 187 | .imbalance_pct = 133, \ |
188 | .cache_hot_time = (10*1000000), \ | ||
189 | .cache_nice_tries = 1, \ | 188 | .cache_nice_tries = 1, \ |
190 | .busy_idx = 3, \ | 189 | .busy_idx = 3, \ |
191 | .idle_idx = 3, \ | 190 | .idle_idx = 3, \ |
diff --git a/include/net/netlabel.h b/include/net/netlabel.h index ffbc7f28335a..2e5b2f6f9fa0 100644 --- a/include/net/netlabel.h +++ b/include/net/netlabel.h | |||
@@ -132,6 +132,8 @@ struct netlbl_lsm_secattr_catmap { | |||
132 | #define NETLBL_SECATTR_CACHE 0x00000002 | 132 | #define NETLBL_SECATTR_CACHE 0x00000002 |
133 | #define NETLBL_SECATTR_MLS_LVL 0x00000004 | 133 | #define NETLBL_SECATTR_MLS_LVL 0x00000004 |
134 | #define NETLBL_SECATTR_MLS_CAT 0x00000008 | 134 | #define NETLBL_SECATTR_MLS_CAT 0x00000008 |
135 | #define NETLBL_SECATTR_CACHEABLE (NETLBL_SECATTR_MLS_LVL | \ | ||
136 | NETLBL_SECATTR_MLS_CAT) | ||
135 | struct netlbl_lsm_secattr { | 137 | struct netlbl_lsm_secattr { |
136 | u32 flags; | 138 | u32 flags; |
137 | 139 | ||
diff --git a/kernel/sched.c b/kernel/sched.c index 238a76957e86..72bb9483d949 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -637,7 +637,7 @@ static u64 div64_likely32(u64 divident, unsigned long divisor) | |||
637 | 637 | ||
638 | #define WMULT_SHIFT 32 | 638 | #define WMULT_SHIFT 32 |
639 | 639 | ||
640 | static inline unsigned long | 640 | static unsigned long |
641 | calc_delta_mine(unsigned long delta_exec, unsigned long weight, | 641 | calc_delta_mine(unsigned long delta_exec, unsigned long weight, |
642 | struct load_weight *lw) | 642 | struct load_weight *lw) |
643 | { | 643 | { |
@@ -657,7 +657,7 @@ calc_delta_mine(unsigned long delta_exec, unsigned long weight, | |||
657 | tmp = (tmp * lw->inv_weight) >> WMULT_SHIFT; | 657 | tmp = (tmp * lw->inv_weight) >> WMULT_SHIFT; |
658 | } | 658 | } |
659 | 659 | ||
660 | return (unsigned long)min(tmp, (u64)sysctl_sched_runtime_limit); | 660 | return (unsigned long)min(tmp, (u64)(unsigned long)LONG_MAX); |
661 | } | 661 | } |
662 | 662 | ||
663 | static inline unsigned long | 663 | static inline unsigned long |
@@ -678,46 +678,6 @@ static void update_load_sub(struct load_weight *lw, unsigned long dec) | |||
678 | lw->inv_weight = 0; | 678 | lw->inv_weight = 0; |
679 | } | 679 | } |
680 | 680 | ||
681 | static void __update_curr_load(struct rq *rq, struct load_stat *ls) | ||
682 | { | ||
683 | if (rq->curr != rq->idle && ls->load.weight) { | ||
684 | ls->delta_exec += ls->delta_stat; | ||
685 | ls->delta_fair += calc_delta_fair(ls->delta_stat, &ls->load); | ||
686 | ls->delta_stat = 0; | ||
687 | } | ||
688 | } | ||
689 | |||
690 | /* | ||
691 | * Update delta_exec, delta_fair fields for rq. | ||
692 | * | ||
693 | * delta_fair clock advances at a rate inversely proportional to | ||
694 | * total load (rq->ls.load.weight) on the runqueue, while | ||
695 | * delta_exec advances at the same rate as wall-clock (provided | ||
696 | * cpu is not idle). | ||
697 | * | ||
698 | * delta_exec / delta_fair is a measure of the (smoothened) load on this | ||
699 | * runqueue over any given interval. This (smoothened) load is used | ||
700 | * during load balance. | ||
701 | * | ||
702 | * This function is called /before/ updating rq->ls.load | ||
703 | * and when switching tasks. | ||
704 | */ | ||
705 | static void update_curr_load(struct rq *rq, u64 now) | ||
706 | { | ||
707 | struct load_stat *ls = &rq->ls; | ||
708 | u64 start; | ||
709 | |||
710 | start = ls->load_update_start; | ||
711 | ls->load_update_start = now; | ||
712 | ls->delta_stat += now - start; | ||
713 | /* | ||
714 | * Stagger updates to ls->delta_fair. Very frequent updates | ||
715 | * can be expensive. | ||
716 | */ | ||
717 | if (ls->delta_stat >= sysctl_sched_stat_granularity) | ||
718 | __update_curr_load(rq, ls); | ||
719 | } | ||
720 | |||
721 | /* | 681 | /* |
722 | * To aid in avoiding the subversion of "niceness" due to uneven distribution | 682 | * To aid in avoiding the subversion of "niceness" due to uneven distribution |
723 | * of tasks with abnormal "nice" values across CPUs the contribution that | 683 | * of tasks with abnormal "nice" values across CPUs the contribution that |
@@ -727,19 +687,6 @@ static void update_curr_load(struct rq *rq, u64 now) | |||
727 | * slice expiry etc. | 687 | * slice expiry etc. |
728 | */ | 688 | */ |
729 | 689 | ||
730 | /* | ||
731 | * Assume: static_prio_timeslice(NICE_TO_PRIO(0)) == DEF_TIMESLICE | ||
732 | * If static_prio_timeslice() is ever changed to break this assumption then | ||
733 | * this code will need modification | ||
734 | */ | ||
735 | #define TIME_SLICE_NICE_ZERO DEF_TIMESLICE | ||
736 | #define load_weight(lp) \ | ||
737 | (((lp) * SCHED_LOAD_SCALE) / TIME_SLICE_NICE_ZERO) | ||
738 | #define PRIO_TO_LOAD_WEIGHT(prio) \ | ||
739 | load_weight(static_prio_timeslice(prio)) | ||
740 | #define RTPRIO_TO_LOAD_WEIGHT(rp) \ | ||
741 | (PRIO_TO_LOAD_WEIGHT(MAX_RT_PRIO) + load_weight(rp)) | ||
742 | |||
743 | #define WEIGHT_IDLEPRIO 2 | 690 | #define WEIGHT_IDLEPRIO 2 |
744 | #define WMULT_IDLEPRIO (1 << 31) | 691 | #define WMULT_IDLEPRIO (1 << 31) |
745 | 692 | ||
@@ -781,32 +728,6 @@ static const u32 prio_to_wmult[40] = { | |||
781 | /* 15 */ 119304647, 148102320, 186737708, 238609294, 286331153, | 728 | /* 15 */ 119304647, 148102320, 186737708, 238609294, 286331153, |
782 | }; | 729 | }; |
783 | 730 | ||
784 | static inline void | ||
785 | inc_load(struct rq *rq, const struct task_struct *p, u64 now) | ||
786 | { | ||
787 | update_curr_load(rq, now); | ||
788 | update_load_add(&rq->ls.load, p->se.load.weight); | ||
789 | } | ||
790 | |||
791 | static inline void | ||
792 | dec_load(struct rq *rq, const struct task_struct *p, u64 now) | ||
793 | { | ||
794 | update_curr_load(rq, now); | ||
795 | update_load_sub(&rq->ls.load, p->se.load.weight); | ||
796 | } | ||
797 | |||
798 | static inline void inc_nr_running(struct task_struct *p, struct rq *rq, u64 now) | ||
799 | { | ||
800 | rq->nr_running++; | ||
801 | inc_load(rq, p, now); | ||
802 | } | ||
803 | |||
804 | static inline void dec_nr_running(struct task_struct *p, struct rq *rq, u64 now) | ||
805 | { | ||
806 | rq->nr_running--; | ||
807 | dec_load(rq, p, now); | ||
808 | } | ||
809 | |||
810 | static void activate_task(struct rq *rq, struct task_struct *p, int wakeup); | 731 | static void activate_task(struct rq *rq, struct task_struct *p, int wakeup); |
811 | 732 | ||
812 | /* | 733 | /* |
@@ -837,6 +758,72 @@ static int balance_tasks(struct rq *this_rq, int this_cpu, struct rq *busiest, | |||
837 | 758 | ||
838 | #define sched_class_highest (&rt_sched_class) | 759 | #define sched_class_highest (&rt_sched_class) |
839 | 760 | ||
761 | static void __update_curr_load(struct rq *rq, struct load_stat *ls) | ||
762 | { | ||
763 | if (rq->curr != rq->idle && ls->load.weight) { | ||
764 | ls->delta_exec += ls->delta_stat; | ||
765 | ls->delta_fair += calc_delta_fair(ls->delta_stat, &ls->load); | ||
766 | ls->delta_stat = 0; | ||
767 | } | ||
768 | } | ||
769 | |||
770 | /* | ||
771 | * Update delta_exec, delta_fair fields for rq. | ||
772 | * | ||
773 | * delta_fair clock advances at a rate inversely proportional to | ||
774 | * total load (rq->ls.load.weight) on the runqueue, while | ||
775 | * delta_exec advances at the same rate as wall-clock (provided | ||
776 | * cpu is not idle). | ||
777 | * | ||
778 | * delta_exec / delta_fair is a measure of the (smoothened) load on this | ||
779 | * runqueue over any given interval. This (smoothened) load is used | ||
780 | * during load balance. | ||
781 | * | ||
782 | * This function is called /before/ updating rq->ls.load | ||
783 | * and when switching tasks. | ||
784 | */ | ||
785 | static void update_curr_load(struct rq *rq, u64 now) | ||
786 | { | ||
787 | struct load_stat *ls = &rq->ls; | ||
788 | u64 start; | ||
789 | |||
790 | start = ls->load_update_start; | ||
791 | ls->load_update_start = now; | ||
792 | ls->delta_stat += now - start; | ||
793 | /* | ||
794 | * Stagger updates to ls->delta_fair. Very frequent updates | ||
795 | * can be expensive. | ||
796 | */ | ||
797 | if (ls->delta_stat >= sysctl_sched_stat_granularity) | ||
798 | __update_curr_load(rq, ls); | ||
799 | } | ||
800 | |||
801 | static inline void | ||
802 | inc_load(struct rq *rq, const struct task_struct *p, u64 now) | ||
803 | { | ||
804 | update_curr_load(rq, now); | ||
805 | update_load_add(&rq->ls.load, p->se.load.weight); | ||
806 | } | ||
807 | |||
808 | static inline void | ||
809 | dec_load(struct rq *rq, const struct task_struct *p, u64 now) | ||
810 | { | ||
811 | update_curr_load(rq, now); | ||
812 | update_load_sub(&rq->ls.load, p->se.load.weight); | ||
813 | } | ||
814 | |||
815 | static void inc_nr_running(struct task_struct *p, struct rq *rq, u64 now) | ||
816 | { | ||
817 | rq->nr_running++; | ||
818 | inc_load(rq, p, now); | ||
819 | } | ||
820 | |||
821 | static void dec_nr_running(struct task_struct *p, struct rq *rq, u64 now) | ||
822 | { | ||
823 | rq->nr_running--; | ||
824 | dec_load(rq, p, now); | ||
825 | } | ||
826 | |||
840 | static void set_load_weight(struct task_struct *p) | 827 | static void set_load_weight(struct task_struct *p) |
841 | { | 828 | { |
842 | task_rq(p)->cfs.wait_runtime -= p->se.wait_runtime; | 829 | task_rq(p)->cfs.wait_runtime -= p->se.wait_runtime; |
@@ -996,18 +983,21 @@ void set_task_cpu(struct task_struct *p, unsigned int new_cpu) | |||
996 | u64 clock_offset, fair_clock_offset; | 983 | u64 clock_offset, fair_clock_offset; |
997 | 984 | ||
998 | clock_offset = old_rq->clock - new_rq->clock; | 985 | clock_offset = old_rq->clock - new_rq->clock; |
999 | fair_clock_offset = old_rq->cfs.fair_clock - | 986 | fair_clock_offset = old_rq->cfs.fair_clock - new_rq->cfs.fair_clock; |
1000 | new_rq->cfs.fair_clock; | 987 | |
1001 | if (p->se.wait_start) | ||
1002 | p->se.wait_start -= clock_offset; | ||
1003 | if (p->se.wait_start_fair) | 988 | if (p->se.wait_start_fair) |
1004 | p->se.wait_start_fair -= fair_clock_offset; | 989 | p->se.wait_start_fair -= fair_clock_offset; |
990 | if (p->se.sleep_start_fair) | ||
991 | p->se.sleep_start_fair -= fair_clock_offset; | ||
992 | |||
993 | #ifdef CONFIG_SCHEDSTATS | ||
994 | if (p->se.wait_start) | ||
995 | p->se.wait_start -= clock_offset; | ||
1005 | if (p->se.sleep_start) | 996 | if (p->se.sleep_start) |
1006 | p->se.sleep_start -= clock_offset; | 997 | p->se.sleep_start -= clock_offset; |
1007 | if (p->se.block_start) | 998 | if (p->se.block_start) |
1008 | p->se.block_start -= clock_offset; | 999 | p->se.block_start -= clock_offset; |
1009 | if (p->se.sleep_start_fair) | 1000 | #endif |
1010 | p->se.sleep_start_fair -= fair_clock_offset; | ||
1011 | 1001 | ||
1012 | __set_task_cpu(p, new_cpu); | 1002 | __set_task_cpu(p, new_cpu); |
1013 | } | 1003 | } |
@@ -1568,17 +1558,19 @@ int fastcall wake_up_state(struct task_struct *p, unsigned int state) | |||
1568 | static void __sched_fork(struct task_struct *p) | 1558 | static void __sched_fork(struct task_struct *p) |
1569 | { | 1559 | { |
1570 | p->se.wait_start_fair = 0; | 1560 | p->se.wait_start_fair = 0; |
1571 | p->se.wait_start = 0; | ||
1572 | p->se.exec_start = 0; | 1561 | p->se.exec_start = 0; |
1573 | p->se.sum_exec_runtime = 0; | 1562 | p->se.sum_exec_runtime = 0; |
1574 | p->se.delta_exec = 0; | 1563 | p->se.delta_exec = 0; |
1575 | p->se.delta_fair_run = 0; | 1564 | p->se.delta_fair_run = 0; |
1576 | p->se.delta_fair_sleep = 0; | 1565 | p->se.delta_fair_sleep = 0; |
1577 | p->se.wait_runtime = 0; | 1566 | p->se.wait_runtime = 0; |
1567 | p->se.sleep_start_fair = 0; | ||
1568 | |||
1569 | #ifdef CONFIG_SCHEDSTATS | ||
1570 | p->se.wait_start = 0; | ||
1578 | p->se.sum_wait_runtime = 0; | 1571 | p->se.sum_wait_runtime = 0; |
1579 | p->se.sum_sleep_runtime = 0; | 1572 | p->se.sum_sleep_runtime = 0; |
1580 | p->se.sleep_start = 0; | 1573 | p->se.sleep_start = 0; |
1581 | p->se.sleep_start_fair = 0; | ||
1582 | p->se.block_start = 0; | 1574 | p->se.block_start = 0; |
1583 | p->se.sleep_max = 0; | 1575 | p->se.sleep_max = 0; |
1584 | p->se.block_max = 0; | 1576 | p->se.block_max = 0; |
@@ -1586,6 +1578,7 @@ static void __sched_fork(struct task_struct *p) | |||
1586 | p->se.wait_max = 0; | 1578 | p->se.wait_max = 0; |
1587 | p->se.wait_runtime_overruns = 0; | 1579 | p->se.wait_runtime_overruns = 0; |
1588 | p->se.wait_runtime_underruns = 0; | 1580 | p->se.wait_runtime_underruns = 0; |
1581 | #endif | ||
1589 | 1582 | ||
1590 | INIT_LIST_HEAD(&p->run_list); | 1583 | INIT_LIST_HEAD(&p->run_list); |
1591 | p->se.on_rq = 0; | 1584 | p->se.on_rq = 0; |
@@ -1654,22 +1647,27 @@ void fastcall wake_up_new_task(struct task_struct *p, unsigned long clone_flags) | |||
1654 | unsigned long flags; | 1647 | unsigned long flags; |
1655 | struct rq *rq; | 1648 | struct rq *rq; |
1656 | int this_cpu; | 1649 | int this_cpu; |
1650 | u64 now; | ||
1657 | 1651 | ||
1658 | rq = task_rq_lock(p, &flags); | 1652 | rq = task_rq_lock(p, &flags); |
1659 | BUG_ON(p->state != TASK_RUNNING); | 1653 | BUG_ON(p->state != TASK_RUNNING); |
1660 | this_cpu = smp_processor_id(); /* parent's CPU */ | 1654 | this_cpu = smp_processor_id(); /* parent's CPU */ |
1655 | now = rq_clock(rq); | ||
1661 | 1656 | ||
1662 | p->prio = effective_prio(p); | 1657 | p->prio = effective_prio(p); |
1663 | 1658 | ||
1664 | if (!sysctl_sched_child_runs_first || (clone_flags & CLONE_VM) || | 1659 | if (!p->sched_class->task_new || !sysctl_sched_child_runs_first || |
1665 | task_cpu(p) != this_cpu || !current->se.on_rq) { | 1660 | (clone_flags & CLONE_VM) || task_cpu(p) != this_cpu || |
1661 | !current->se.on_rq) { | ||
1662 | |||
1666 | activate_task(rq, p, 0); | 1663 | activate_task(rq, p, 0); |
1667 | } else { | 1664 | } else { |
1668 | /* | 1665 | /* |
1669 | * Let the scheduling class do new task startup | 1666 | * Let the scheduling class do new task startup |
1670 | * management (if any): | 1667 | * management (if any): |
1671 | */ | 1668 | */ |
1672 | p->sched_class->task_new(rq, p); | 1669 | p->sched_class->task_new(rq, p, now); |
1670 | inc_nr_running(p, rq, now); | ||
1673 | } | 1671 | } |
1674 | check_preempt_curr(rq, p); | 1672 | check_preempt_curr(rq, p); |
1675 | task_rq_unlock(rq, &flags); | 1673 | task_rq_unlock(rq, &flags); |
@@ -2908,8 +2906,7 @@ static void active_load_balance(struct rq *busiest_rq, int busiest_cpu) | |||
2908 | schedstat_inc(sd, alb_cnt); | 2906 | schedstat_inc(sd, alb_cnt); |
2909 | 2907 | ||
2910 | if (move_tasks(target_rq, target_cpu, busiest_rq, 1, | 2908 | if (move_tasks(target_rq, target_cpu, busiest_rq, 1, |
2911 | RTPRIO_TO_LOAD_WEIGHT(100), sd, CPU_IDLE, | 2909 | ULONG_MAX, sd, CPU_IDLE, NULL)) |
2912 | NULL)) | ||
2913 | schedstat_inc(sd, alb_pushed); | 2910 | schedstat_inc(sd, alb_pushed); |
2914 | else | 2911 | else |
2915 | schedstat_inc(sd, alb_failed); | 2912 | schedstat_inc(sd, alb_failed); |
@@ -5269,8 +5266,6 @@ sd_alloc_ctl_domain_table(struct sched_domain *sd) | |||
5269 | sizeof(int), 0644, proc_dointvec_minmax); | 5266 | sizeof(int), 0644, proc_dointvec_minmax); |
5270 | set_table_entry(&table[8], 9, "imbalance_pct", &sd->imbalance_pct, | 5267 | set_table_entry(&table[8], 9, "imbalance_pct", &sd->imbalance_pct, |
5271 | sizeof(int), 0644, proc_dointvec_minmax); | 5268 | sizeof(int), 0644, proc_dointvec_minmax); |
5272 | set_table_entry(&table[9], 10, "cache_hot_time", &sd->cache_hot_time, | ||
5273 | sizeof(long long), 0644, proc_doulongvec_minmax); | ||
5274 | set_table_entry(&table[10], 11, "cache_nice_tries", | 5269 | set_table_entry(&table[10], 11, "cache_nice_tries", |
5275 | &sd->cache_nice_tries, | 5270 | &sd->cache_nice_tries, |
5276 | sizeof(int), 0644, proc_dointvec_minmax); | 5271 | sizeof(int), 0644, proc_dointvec_minmax); |
@@ -6590,12 +6585,14 @@ void normalize_rt_tasks(void) | |||
6590 | do_each_thread(g, p) { | 6585 | do_each_thread(g, p) { |
6591 | p->se.fair_key = 0; | 6586 | p->se.fair_key = 0; |
6592 | p->se.wait_runtime = 0; | 6587 | p->se.wait_runtime = 0; |
6588 | p->se.exec_start = 0; | ||
6593 | p->se.wait_start_fair = 0; | 6589 | p->se.wait_start_fair = 0; |
6590 | p->se.sleep_start_fair = 0; | ||
6591 | #ifdef CONFIG_SCHEDSTATS | ||
6594 | p->se.wait_start = 0; | 6592 | p->se.wait_start = 0; |
6595 | p->se.exec_start = 0; | ||
6596 | p->se.sleep_start = 0; | 6593 | p->se.sleep_start = 0; |
6597 | p->se.sleep_start_fair = 0; | ||
6598 | p->se.block_start = 0; | 6594 | p->se.block_start = 0; |
6595 | #endif | ||
6599 | task_rq(p)->cfs.fair_clock = 0; | 6596 | task_rq(p)->cfs.fair_clock = 0; |
6600 | task_rq(p)->clock = 0; | 6597 | task_rq(p)->clock = 0; |
6601 | 6598 | ||
diff --git a/kernel/sched_debug.c b/kernel/sched_debug.c index 0eca442b7792..1c61e5315ad2 100644 --- a/kernel/sched_debug.c +++ b/kernel/sched_debug.c | |||
@@ -44,11 +44,16 @@ print_task(struct seq_file *m, struct rq *rq, struct task_struct *p, u64 now) | |||
44 | (long long)p->se.wait_runtime, | 44 | (long long)p->se.wait_runtime, |
45 | (long long)(p->nvcsw + p->nivcsw), | 45 | (long long)(p->nvcsw + p->nivcsw), |
46 | p->prio, | 46 | p->prio, |
47 | #ifdef CONFIG_SCHEDSTATS | ||
47 | (long long)p->se.sum_exec_runtime, | 48 | (long long)p->se.sum_exec_runtime, |
48 | (long long)p->se.sum_wait_runtime, | 49 | (long long)p->se.sum_wait_runtime, |
49 | (long long)p->se.sum_sleep_runtime, | 50 | (long long)p->se.sum_sleep_runtime, |
50 | (long long)p->se.wait_runtime_overruns, | 51 | (long long)p->se.wait_runtime_overruns, |
51 | (long long)p->se.wait_runtime_underruns); | 52 | (long long)p->se.wait_runtime_underruns |
53 | #else | ||
54 | 0LL, 0LL, 0LL, 0LL, 0LL | ||
55 | #endif | ||
56 | ); | ||
52 | } | 57 | } |
53 | 58 | ||
54 | static void print_rq(struct seq_file *m, struct rq *rq, int rq_cpu, u64 now) | 59 | static void print_rq(struct seq_file *m, struct rq *rq, int rq_cpu, u64 now) |
@@ -171,7 +176,7 @@ static int sched_debug_show(struct seq_file *m, void *v) | |||
171 | u64 now = ktime_to_ns(ktime_get()); | 176 | u64 now = ktime_to_ns(ktime_get()); |
172 | int cpu; | 177 | int cpu; |
173 | 178 | ||
174 | SEQ_printf(m, "Sched Debug Version: v0.05, %s %.*s\n", | 179 | SEQ_printf(m, "Sched Debug Version: v0.05-v20, %s %.*s\n", |
175 | init_utsname()->release, | 180 | init_utsname()->release, |
176 | (int)strcspn(init_utsname()->version, " "), | 181 | (int)strcspn(init_utsname()->version, " "), |
177 | init_utsname()->version); | 182 | init_utsname()->version); |
@@ -235,21 +240,24 @@ void proc_sched_show_task(struct task_struct *p, struct seq_file *m) | |||
235 | #define P(F) \ | 240 | #define P(F) \ |
236 | SEQ_printf(m, "%-25s:%20Ld\n", #F, (long long)p->F) | 241 | SEQ_printf(m, "%-25s:%20Ld\n", #F, (long long)p->F) |
237 | 242 | ||
238 | P(se.wait_start); | 243 | P(se.wait_runtime); |
239 | P(se.wait_start_fair); | 244 | P(se.wait_start_fair); |
240 | P(se.exec_start); | 245 | P(se.exec_start); |
241 | P(se.sleep_start); | ||
242 | P(se.sleep_start_fair); | 246 | P(se.sleep_start_fair); |
247 | P(se.sum_exec_runtime); | ||
248 | |||
249 | #ifdef CONFIG_SCHEDSTATS | ||
250 | P(se.wait_start); | ||
251 | P(se.sleep_start); | ||
243 | P(se.block_start); | 252 | P(se.block_start); |
244 | P(se.sleep_max); | 253 | P(se.sleep_max); |
245 | P(se.block_max); | 254 | P(se.block_max); |
246 | P(se.exec_max); | 255 | P(se.exec_max); |
247 | P(se.wait_max); | 256 | P(se.wait_max); |
248 | P(se.wait_runtime); | ||
249 | P(se.wait_runtime_overruns); | 257 | P(se.wait_runtime_overruns); |
250 | P(se.wait_runtime_underruns); | 258 | P(se.wait_runtime_underruns); |
251 | P(se.sum_wait_runtime); | 259 | P(se.sum_wait_runtime); |
252 | P(se.sum_exec_runtime); | 260 | #endif |
253 | SEQ_printf(m, "%-25s:%20Ld\n", | 261 | SEQ_printf(m, "%-25s:%20Ld\n", |
254 | "nr_switches", (long long)(p->nvcsw + p->nivcsw)); | 262 | "nr_switches", (long long)(p->nvcsw + p->nivcsw)); |
255 | P(se.load.weight); | 263 | P(se.load.weight); |
@@ -269,7 +277,9 @@ void proc_sched_show_task(struct task_struct *p, struct seq_file *m) | |||
269 | 277 | ||
270 | void proc_sched_set_task(struct task_struct *p) | 278 | void proc_sched_set_task(struct task_struct *p) |
271 | { | 279 | { |
280 | #ifdef CONFIG_SCHEDSTATS | ||
272 | p->se.sleep_max = p->se.block_max = p->se.exec_max = p->se.wait_max = 0; | 281 | p->se.sleep_max = p->se.block_max = p->se.exec_max = p->se.wait_max = 0; |
273 | p->se.wait_runtime_overruns = p->se.wait_runtime_underruns = 0; | 282 | p->se.wait_runtime_overruns = p->se.wait_runtime_underruns = 0; |
283 | #endif | ||
274 | p->se.sum_exec_runtime = 0; | 284 | p->se.sum_exec_runtime = 0; |
275 | } | 285 | } |
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 6971db0a7160..6f579ff5a9bc 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
@@ -292,10 +292,7 @@ __update_curr(struct cfs_rq *cfs_rq, struct sched_entity *curr, u64 now) | |||
292 | return; | 292 | return; |
293 | 293 | ||
294 | delta_exec = curr->delta_exec; | 294 | delta_exec = curr->delta_exec; |
295 | #ifdef CONFIG_SCHEDSTATS | 295 | schedstat_set(curr->exec_max, max((u64)delta_exec, curr->exec_max)); |
296 | if (unlikely(delta_exec > curr->exec_max)) | ||
297 | curr->exec_max = delta_exec; | ||
298 | #endif | ||
299 | 296 | ||
300 | curr->sum_exec_runtime += delta_exec; | 297 | curr->sum_exec_runtime += delta_exec; |
301 | cfs_rq->exec_clock += delta_exec; | 298 | cfs_rq->exec_clock += delta_exec; |
@@ -352,7 +349,7 @@ static inline void | |||
352 | update_stats_wait_start(struct cfs_rq *cfs_rq, struct sched_entity *se, u64 now) | 349 | update_stats_wait_start(struct cfs_rq *cfs_rq, struct sched_entity *se, u64 now) |
353 | { | 350 | { |
354 | se->wait_start_fair = cfs_rq->fair_clock; | 351 | se->wait_start_fair = cfs_rq->fair_clock; |
355 | se->wait_start = now; | 352 | schedstat_set(se->wait_start, now); |
356 | } | 353 | } |
357 | 354 | ||
358 | /* | 355 | /* |
@@ -425,13 +422,7 @@ __update_stats_wait_end(struct cfs_rq *cfs_rq, struct sched_entity *se, u64 now) | |||
425 | { | 422 | { |
426 | unsigned long delta_fair = se->delta_fair_run; | 423 | unsigned long delta_fair = se->delta_fair_run; |
427 | 424 | ||
428 | #ifdef CONFIG_SCHEDSTATS | 425 | schedstat_set(se->wait_max, max(se->wait_max, now - se->wait_start)); |
429 | { | ||
430 | s64 delta_wait = now - se->wait_start; | ||
431 | if (unlikely(delta_wait > se->wait_max)) | ||
432 | se->wait_max = delta_wait; | ||
433 | } | ||
434 | #endif | ||
435 | 426 | ||
436 | if (unlikely(se->load.weight != NICE_0_LOAD)) | 427 | if (unlikely(se->load.weight != NICE_0_LOAD)) |
437 | delta_fair = calc_weighted(delta_fair, se->load.weight, | 428 | delta_fair = calc_weighted(delta_fair, se->load.weight, |
@@ -456,7 +447,7 @@ update_stats_wait_end(struct cfs_rq *cfs_rq, struct sched_entity *se, u64 now) | |||
456 | } | 447 | } |
457 | 448 | ||
458 | se->wait_start_fair = 0; | 449 | se->wait_start_fair = 0; |
459 | se->wait_start = 0; | 450 | schedstat_set(se->wait_start, 0); |
460 | } | 451 | } |
461 | 452 | ||
462 | static inline void | 453 | static inline void |
@@ -1041,11 +1032,10 @@ static void task_tick_fair(struct rq *rq, struct task_struct *curr) | |||
1041 | * monopolize the CPU. Note: the parent runqueue is locked, | 1032 | * monopolize the CPU. Note: the parent runqueue is locked, |
1042 | * the child is not running yet. | 1033 | * the child is not running yet. |
1043 | */ | 1034 | */ |
1044 | static void task_new_fair(struct rq *rq, struct task_struct *p) | 1035 | static void task_new_fair(struct rq *rq, struct task_struct *p, u64 now) |
1045 | { | 1036 | { |
1046 | struct cfs_rq *cfs_rq = task_cfs_rq(p); | 1037 | struct cfs_rq *cfs_rq = task_cfs_rq(p); |
1047 | struct sched_entity *se = &p->se; | 1038 | struct sched_entity *se = &p->se; |
1048 | u64 now = rq_clock(rq); | ||
1049 | 1039 | ||
1050 | sched_info_queued(p); | 1040 | sched_info_queued(p); |
1051 | 1041 | ||
@@ -1072,7 +1062,6 @@ static void task_new_fair(struct rq *rq, struct task_struct *p) | |||
1072 | p->se.wait_runtime = -(sysctl_sched_granularity / 2); | 1062 | p->se.wait_runtime = -(sysctl_sched_granularity / 2); |
1073 | 1063 | ||
1074 | __enqueue_entity(cfs_rq, se); | 1064 | __enqueue_entity(cfs_rq, se); |
1075 | inc_nr_running(p, rq, now); | ||
1076 | } | 1065 | } |
1077 | 1066 | ||
1078 | #ifdef CONFIG_FAIR_GROUP_SCHED | 1067 | #ifdef CONFIG_FAIR_GROUP_SCHED |
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c index 1192a2741b99..002fcf8d3f64 100644 --- a/kernel/sched_rt.c +++ b/kernel/sched_rt.c | |||
@@ -18,8 +18,8 @@ static inline void update_curr_rt(struct rq *rq, u64 now) | |||
18 | delta_exec = now - curr->se.exec_start; | 18 | delta_exec = now - curr->se.exec_start; |
19 | if (unlikely((s64)delta_exec < 0)) | 19 | if (unlikely((s64)delta_exec < 0)) |
20 | delta_exec = 0; | 20 | delta_exec = 0; |
21 | if (unlikely(delta_exec > curr->se.exec_max)) | 21 | |
22 | curr->se.exec_max = delta_exec; | 22 | schedstat_set(curr->se.exec_max, max(curr->se.exec_max, delta_exec)); |
23 | 23 | ||
24 | curr->se.sum_exec_runtime += delta_exec; | 24 | curr->se.sum_exec_runtime += delta_exec; |
25 | curr->se.exec_start = now; | 25 | curr->se.exec_start = now; |
@@ -229,15 +229,6 @@ static void task_tick_rt(struct rq *rq, struct task_struct *p) | |||
229 | requeue_task_rt(rq, p); | 229 | requeue_task_rt(rq, p); |
230 | } | 230 | } |
231 | 231 | ||
232 | /* | ||
233 | * No parent/child timeslice management necessary for RT tasks, | ||
234 | * just activate them: | ||
235 | */ | ||
236 | static void task_new_rt(struct rq *rq, struct task_struct *p) | ||
237 | { | ||
238 | activate_task(rq, p, 1); | ||
239 | } | ||
240 | |||
241 | static struct sched_class rt_sched_class __read_mostly = { | 232 | static struct sched_class rt_sched_class __read_mostly = { |
242 | .enqueue_task = enqueue_task_rt, | 233 | .enqueue_task = enqueue_task_rt, |
243 | .dequeue_task = dequeue_task_rt, | 234 | .dequeue_task = dequeue_task_rt, |
@@ -251,5 +242,4 @@ static struct sched_class rt_sched_class __read_mostly = { | |||
251 | .load_balance = load_balance_rt, | 242 | .load_balance = load_balance_rt, |
252 | 243 | ||
253 | .task_tick = task_tick_rt, | 244 | .task_tick = task_tick_rt, |
254 | .task_new = task_new_rt, | ||
255 | }; | 245 | }; |
diff --git a/kernel/sched_stats.h b/kernel/sched_stats.h index c63c38f6fa6e..c20a94dda61e 100644 --- a/kernel/sched_stats.h +++ b/kernel/sched_stats.h | |||
@@ -116,6 +116,7 @@ rq_sched_info_depart(struct rq *rq, unsigned long long delta) | |||
116 | } | 116 | } |
117 | # define schedstat_inc(rq, field) do { (rq)->field++; } while (0) | 117 | # define schedstat_inc(rq, field) do { (rq)->field++; } while (0) |
118 | # define schedstat_add(rq, field, amt) do { (rq)->field += (amt); } while (0) | 118 | # define schedstat_add(rq, field, amt) do { (rq)->field += (amt); } while (0) |
119 | # define schedstat_set(var, val) do { var = (val); } while (0) | ||
119 | #else /* !CONFIG_SCHEDSTATS */ | 120 | #else /* !CONFIG_SCHEDSTATS */ |
120 | static inline void | 121 | static inline void |
121 | rq_sched_info_arrive(struct rq *rq, unsigned long long delta) | 122 | rq_sched_info_arrive(struct rq *rq, unsigned long long delta) |
@@ -125,6 +126,7 @@ rq_sched_info_depart(struct rq *rq, unsigned long long delta) | |||
125 | {} | 126 | {} |
126 | # define schedstat_inc(rq, field) do { } while (0) | 127 | # define schedstat_inc(rq, field) do { } while (0) |
127 | # define schedstat_add(rq, field, amt) do { } while (0) | 128 | # define schedstat_add(rq, field, amt) do { } while (0) |
129 | # define schedstat_set(var, val) do { } while (0) | ||
128 | #endif | 130 | #endif |
129 | 131 | ||
130 | #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) | 132 | #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) |
diff --git a/net/netlabel/netlabel_user.c b/net/netlabel/netlabel_user.c index 89dcc485653b..85a96a3fddaa 100644 --- a/net/netlabel/netlabel_user.c +++ b/net/netlabel/netlabel_user.c | |||
@@ -113,8 +113,10 @@ struct audit_buffer *netlbl_audit_start_common(int type, | |||
113 | if (audit_info->secid != 0 && | 113 | if (audit_info->secid != 0 && |
114 | security_secid_to_secctx(audit_info->secid, | 114 | security_secid_to_secctx(audit_info->secid, |
115 | &secctx, | 115 | &secctx, |
116 | &secctx_len) == 0) | 116 | &secctx_len) == 0) { |
117 | audit_log_format(audit_buf, " subj=%s", secctx); | 117 | audit_log_format(audit_buf, " subj=%s", secctx); |
118 | security_release_secctx(secctx, secctx_len); | ||
119 | } | ||
118 | 120 | ||
119 | return audit_buf; | 121 | return audit_buf; |
120 | } | 122 | } |
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 95a47304336d..e5a3be03aa0d 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c | |||
@@ -2195,9 +2195,10 @@ void xfrm_audit_log(uid_t auid, u32 sid, int type, int result, | |||
2195 | } | 2195 | } |
2196 | 2196 | ||
2197 | if (sid != 0 && | 2197 | if (sid != 0 && |
2198 | security_secid_to_secctx(sid, &secctx, &secctx_len) == 0) | 2198 | security_secid_to_secctx(sid, &secctx, &secctx_len) == 0) { |
2199 | audit_log_format(audit_buf, " subj=%s", secctx); | 2199 | audit_log_format(audit_buf, " subj=%s", secctx); |
2200 | else | 2200 | security_release_secctx(secctx, secctx_len); |
2201 | } else | ||
2201 | audit_log_task_context(audit_buf); | 2202 | audit_log_task_context(audit_buf); |
2202 | 2203 | ||
2203 | if (xp) { | 2204 | if (xp) { |
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 0fac6829c63a..6237933f7d82 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
@@ -4658,8 +4658,7 @@ static int selinux_secid_to_secctx(u32 secid, char **secdata, u32 *seclen) | |||
4658 | 4658 | ||
4659 | static void selinux_release_secctx(char *secdata, u32 seclen) | 4659 | static void selinux_release_secctx(char *secdata, u32 seclen) |
4660 | { | 4660 | { |
4661 | if (secdata) | 4661 | kfree(secdata); |
4662 | kfree(secdata); | ||
4663 | } | 4662 | } |
4664 | 4663 | ||
4665 | #ifdef CONFIG_KEYS | 4664 | #ifdef CONFIG_KEYS |
diff --git a/security/selinux/netlabel.c b/security/selinux/netlabel.c index 051b14c88e2d..d243ddc723a5 100644 --- a/security/selinux/netlabel.c +++ b/security/selinux/netlabel.c | |||
@@ -162,9 +162,13 @@ int selinux_netlbl_skbuff_getsid(struct sk_buff *skb, u32 base_sid, u32 *sid) | |||
162 | 162 | ||
163 | netlbl_secattr_init(&secattr); | 163 | netlbl_secattr_init(&secattr); |
164 | rc = netlbl_skbuff_getattr(skb, &secattr); | 164 | rc = netlbl_skbuff_getattr(skb, &secattr); |
165 | if (rc == 0 && secattr.flags != NETLBL_SECATTR_NONE) | 165 | if (rc == 0 && secattr.flags != NETLBL_SECATTR_NONE) { |
166 | rc = security_netlbl_secattr_to_sid(&secattr, base_sid, sid); | 166 | rc = security_netlbl_secattr_to_sid(&secattr, base_sid, sid); |
167 | else | 167 | if (rc == 0 && |
168 | (secattr.flags & NETLBL_SECATTR_CACHEABLE) && | ||
169 | (secattr.flags & NETLBL_SECATTR_CACHE)) | ||
170 | netlbl_cache_add(skb, &secattr); | ||
171 | } else | ||
168 | *sid = SECSID_NULL; | 172 | *sid = SECSID_NULL; |
169 | netlbl_secattr_destroy(&secattr); | 173 | netlbl_secattr_destroy(&secattr); |
170 | 174 | ||
@@ -307,11 +311,15 @@ int selinux_netlbl_sock_rcv_skb(struct sk_security_struct *sksec, | |||
307 | 311 | ||
308 | netlbl_secattr_init(&secattr); | 312 | netlbl_secattr_init(&secattr); |
309 | rc = netlbl_skbuff_getattr(skb, &secattr); | 313 | rc = netlbl_skbuff_getattr(skb, &secattr); |
310 | if (rc == 0 && secattr.flags != NETLBL_SECATTR_NONE) | 314 | if (rc == 0 && secattr.flags != NETLBL_SECATTR_NONE) { |
311 | rc = security_netlbl_secattr_to_sid(&secattr, | 315 | rc = security_netlbl_secattr_to_sid(&secattr, |
312 | SECINITSID_NETMSG, | 316 | SECINITSID_NETMSG, |
313 | &nlbl_sid); | 317 | &nlbl_sid); |
314 | else | 318 | if (rc == 0 && |
319 | (secattr.flags & NETLBL_SECATTR_CACHEABLE) && | ||
320 | (secattr.flags & NETLBL_SECATTR_CACHE)) | ||
321 | netlbl_cache_add(skb, &secattr); | ||
322 | } else | ||
315 | nlbl_sid = SECINITSID_UNLABELED; | 323 | nlbl_sid = SECINITSID_UNLABELED; |
316 | netlbl_secattr_destroy(&secattr); | 324 | netlbl_secattr_destroy(&secattr); |
317 | if (rc != 0) | 325 | if (rc != 0) |