···9595CONFIG_NF_TABLES_NETDEV=m9696CONFIG_NFT_EXTHDR=m9797CONFIG_NFT_META=m9898+CONFIG_NFT_NUMGEN=m9899CONFIG_NFT_CT=m9999-CONFIG_NFT_RBTREE=m100100-CONFIG_NFT_HASH=m100100+CONFIG_NFT_SET_RBTREE=m101101+CONFIG_NFT_SET_HASH=m101102CONFIG_NFT_COUNTER=m102103CONFIG_NFT_LOG=m103104CONFIG_NFT_LIMIT=m···106105CONFIG_NFT_REDIR=m107106CONFIG_NFT_NAT=m108107CONFIG_NFT_QUEUE=m108108+CONFIG_NFT_QUOTA=m109109CONFIG_NFT_REJECT=m110110CONFIG_NFT_COMPAT=m111111+CONFIG_NFT_HASH=m111112CONFIG_NFT_DUP_NETDEV=m112113CONFIG_NFT_FWD_NETDEV=m113114CONFIG_NETFILTER_XT_SET=m···369366CONFIG_NETCONSOLE_DYNAMIC=y370367CONFIG_VETH=m371368# CONFIG_NET_VENDOR_3COM is not set369369+# CONFIG_NET_VENDOR_AMAZON is not set372370CONFIG_A2065=y373371CONFIG_ARIADNE=y374372# CONFIG_NET_VENDOR_ARC is not set
+6-2
arch/m68k/configs/apollo_defconfig
···9393CONFIG_NF_TABLES_NETDEV=m9494CONFIG_NFT_EXTHDR=m9595CONFIG_NFT_META=m9696+CONFIG_NFT_NUMGEN=m9697CONFIG_NFT_CT=m9797-CONFIG_NFT_RBTREE=m9898-CONFIG_NFT_HASH=m9898+CONFIG_NFT_SET_RBTREE=m9999+CONFIG_NFT_SET_HASH=m99100CONFIG_NFT_COUNTER=m100101CONFIG_NFT_LOG=m101102CONFIG_NFT_LIMIT=m···104103CONFIG_NFT_REDIR=m105104CONFIG_NFT_NAT=m106105CONFIG_NFT_QUEUE=m106106+CONFIG_NFT_QUOTA=m107107CONFIG_NFT_REJECT=m108108CONFIG_NFT_COMPAT=m109109+CONFIG_NFT_HASH=m109110CONFIG_NFT_DUP_NETDEV=m110111CONFIG_NFT_FWD_NETDEV=m111112CONFIG_NETFILTER_XT_SET=m···350347CONFIG_NETCONSOLE=m351348CONFIG_NETCONSOLE_DYNAMIC=y352349CONFIG_VETH=m350350+# CONFIG_NET_VENDOR_AMAZON is not set353351# CONFIG_NET_VENDOR_ARC is not set354352# CONFIG_NET_CADENCE is not set355353# CONFIG_NET_VENDOR_BROADCOM is not set
+6-2
arch/m68k/configs/atari_defconfig
···9393CONFIG_NF_TABLES_NETDEV=m9494CONFIG_NFT_EXTHDR=m9595CONFIG_NFT_META=m9696+CONFIG_NFT_NUMGEN=m9697CONFIG_NFT_CT=m9797-CONFIG_NFT_RBTREE=m9898-CONFIG_NFT_HASH=m9898+CONFIG_NFT_SET_RBTREE=m9999+CONFIG_NFT_SET_HASH=m99100CONFIG_NFT_COUNTER=m100101CONFIG_NFT_LOG=m101102CONFIG_NFT_LIMIT=m···104103CONFIG_NFT_REDIR=m105104CONFIG_NFT_NAT=m106105CONFIG_NFT_QUEUE=m106106+CONFIG_NFT_QUOTA=m107107CONFIG_NFT_REJECT=m108108CONFIG_NFT_COMPAT=m109109+CONFIG_NFT_HASH=m109110CONFIG_NFT_DUP_NETDEV=m110111CONFIG_NFT_FWD_NETDEV=m111112CONFIG_NETFILTER_XT_SET=m···359356CONFIG_NETCONSOLE=m360357CONFIG_NETCONSOLE_DYNAMIC=y361358CONFIG_VETH=m359359+# CONFIG_NET_VENDOR_AMAZON is not set362360CONFIG_ATARILANCE=y363361# CONFIG_NET_VENDOR_ARC is not set364362# CONFIG_NET_CADENCE is not set
+6-2
arch/m68k/configs/bvme6000_defconfig
···9191CONFIG_NF_TABLES_NETDEV=m9292CONFIG_NFT_EXTHDR=m9393CONFIG_NFT_META=m9494+CONFIG_NFT_NUMGEN=m9495CONFIG_NFT_CT=m9595-CONFIG_NFT_RBTREE=m9696-CONFIG_NFT_HASH=m9696+CONFIG_NFT_SET_RBTREE=m9797+CONFIG_NFT_SET_HASH=m9798CONFIG_NFT_COUNTER=m9899CONFIG_NFT_LOG=m99100CONFIG_NFT_LIMIT=m···102101CONFIG_NFT_REDIR=m103102CONFIG_NFT_NAT=m104103CONFIG_NFT_QUEUE=m104104+CONFIG_NFT_QUOTA=m105105CONFIG_NFT_REJECT=m106106CONFIG_NFT_COMPAT=m107107+CONFIG_NFT_HASH=m107108CONFIG_NFT_DUP_NETDEV=m108109CONFIG_NFT_FWD_NETDEV=m109110CONFIG_NETFILTER_XT_SET=m···349346CONFIG_NETCONSOLE=m350347CONFIG_NETCONSOLE_DYNAMIC=y351348CONFIG_VETH=m349349+# CONFIG_NET_VENDOR_AMAZON is not set352350# CONFIG_NET_VENDOR_ARC is not set353351# CONFIG_NET_CADENCE is not set354352# CONFIG_NET_VENDOR_BROADCOM is not set
+6-2
arch/m68k/configs/hp300_defconfig
···9393CONFIG_NF_TABLES_NETDEV=m9494CONFIG_NFT_EXTHDR=m9595CONFIG_NFT_META=m9696+CONFIG_NFT_NUMGEN=m9697CONFIG_NFT_CT=m9797-CONFIG_NFT_RBTREE=m9898-CONFIG_NFT_HASH=m9898+CONFIG_NFT_SET_RBTREE=m9999+CONFIG_NFT_SET_HASH=m99100CONFIG_NFT_COUNTER=m100101CONFIG_NFT_LOG=m101102CONFIG_NFT_LIMIT=m···104103CONFIG_NFT_REDIR=m105104CONFIG_NFT_NAT=m106105CONFIG_NFT_QUEUE=m106106+CONFIG_NFT_QUOTA=m107107CONFIG_NFT_REJECT=m108108CONFIG_NFT_COMPAT=m109109+CONFIG_NFT_HASH=m109110CONFIG_NFT_DUP_NETDEV=m110111CONFIG_NFT_FWD_NETDEV=m111112CONFIG_NETFILTER_XT_SET=m···350347CONFIG_NETCONSOLE=m351348CONFIG_NETCONSOLE_DYNAMIC=y352349CONFIG_VETH=m350350+# CONFIG_NET_VENDOR_AMAZON is not set353351CONFIG_HPLANCE=y354352# CONFIG_NET_VENDOR_ARC is not set355353# CONFIG_NET_CADENCE is not set
+6-2
arch/m68k/configs/mac_defconfig
···9292CONFIG_NF_TABLES_NETDEV=m9393CONFIG_NFT_EXTHDR=m9494CONFIG_NFT_META=m9595+CONFIG_NFT_NUMGEN=m9596CONFIG_NFT_CT=m9696-CONFIG_NFT_RBTREE=m9797-CONFIG_NFT_HASH=m9797+CONFIG_NFT_SET_RBTREE=m9898+CONFIG_NFT_SET_HASH=m9899CONFIG_NFT_COUNTER=m99100CONFIG_NFT_LOG=m100101CONFIG_NFT_LIMIT=m···103102CONFIG_NFT_REDIR=m104103CONFIG_NFT_NAT=m105104CONFIG_NFT_QUEUE=m105105+CONFIG_NFT_QUOTA=m106106CONFIG_NFT_REJECT=m107107CONFIG_NFT_COMPAT=m108108+CONFIG_NFT_HASH=m108109CONFIG_NFT_DUP_NETDEV=m109110CONFIG_NFT_FWD_NETDEV=m110111CONFIG_NETFILTER_XT_SET=m···366363CONFIG_NETCONSOLE=m367364CONFIG_NETCONSOLE_DYNAMIC=y368365CONFIG_VETH=m366366+# CONFIG_NET_VENDOR_AMAZON is not set369367CONFIG_MACMACE=y370368# CONFIG_NET_VENDOR_ARC is not set371369# CONFIG_NET_CADENCE is not set
+6-2
arch/m68k/configs/multi_defconfig
···102102CONFIG_NF_TABLES_NETDEV=m103103CONFIG_NFT_EXTHDR=m104104CONFIG_NFT_META=m105105+CONFIG_NFT_NUMGEN=m105106CONFIG_NFT_CT=m106106-CONFIG_NFT_RBTREE=m107107-CONFIG_NFT_HASH=m107107+CONFIG_NFT_SET_RBTREE=m108108+CONFIG_NFT_SET_HASH=m108109CONFIG_NFT_COUNTER=m109110CONFIG_NFT_LOG=m110111CONFIG_NFT_LIMIT=m···113112CONFIG_NFT_REDIR=m114113CONFIG_NFT_NAT=m115114CONFIG_NFT_QUEUE=m115115+CONFIG_NFT_QUOTA=m116116CONFIG_NFT_REJECT=m117117CONFIG_NFT_COMPAT=m118118+CONFIG_NFT_HASH=m118119CONFIG_NFT_DUP_NETDEV=m119120CONFIG_NFT_FWD_NETDEV=m120121CONFIG_NETFILTER_XT_SET=m···400397CONFIG_NETCONSOLE_DYNAMIC=y401398CONFIG_VETH=m402399# CONFIG_NET_VENDOR_3COM is not set400400+# CONFIG_NET_VENDOR_AMAZON is not set403401CONFIG_A2065=y404402CONFIG_ARIADNE=y405403CONFIG_ATARILANCE=y
+6-2
arch/m68k/configs/mvme147_defconfig
···9090CONFIG_NF_TABLES_NETDEV=m9191CONFIG_NFT_EXTHDR=m9292CONFIG_NFT_META=m9393+CONFIG_NFT_NUMGEN=m9394CONFIG_NFT_CT=m9494-CONFIG_NFT_RBTREE=m9595-CONFIG_NFT_HASH=m9595+CONFIG_NFT_SET_RBTREE=m9696+CONFIG_NFT_SET_HASH=m9697CONFIG_NFT_COUNTER=m9798CONFIG_NFT_LOG=m9899CONFIG_NFT_LIMIT=m···101100CONFIG_NFT_REDIR=m102101CONFIG_NFT_NAT=m103102CONFIG_NFT_QUEUE=m103103+CONFIG_NFT_QUOTA=m104104CONFIG_NFT_REJECT=m105105CONFIG_NFT_COMPAT=m106106+CONFIG_NFT_HASH=m106107CONFIG_NFT_DUP_NETDEV=m107108CONFIG_NFT_FWD_NETDEV=m108109CONFIG_NETFILTER_XT_SET=m···348345CONFIG_NETCONSOLE=m349346CONFIG_NETCONSOLE_DYNAMIC=y350347CONFIG_VETH=m348348+# CONFIG_NET_VENDOR_AMAZON is not set351349CONFIG_MVME147_NET=y352350# CONFIG_NET_VENDOR_ARC is not set353351# CONFIG_NET_CADENCE is not set
+6-2
arch/m68k/configs/mvme16x_defconfig
···9191CONFIG_NF_TABLES_NETDEV=m9292CONFIG_NFT_EXTHDR=m9393CONFIG_NFT_META=m9494+CONFIG_NFT_NUMGEN=m9495CONFIG_NFT_CT=m9595-CONFIG_NFT_RBTREE=m9696-CONFIG_NFT_HASH=m9696+CONFIG_NFT_SET_RBTREE=m9797+CONFIG_NFT_SET_HASH=m9798CONFIG_NFT_COUNTER=m9899CONFIG_NFT_LOG=m99100CONFIG_NFT_LIMIT=m···102101CONFIG_NFT_REDIR=m103102CONFIG_NFT_NAT=m104103CONFIG_NFT_QUEUE=m104104+CONFIG_NFT_QUOTA=m105105CONFIG_NFT_REJECT=m106106CONFIG_NFT_COMPAT=m107107+CONFIG_NFT_HASH=m107108CONFIG_NFT_DUP_NETDEV=m108109CONFIG_NFT_FWD_NETDEV=m109110CONFIG_NETFILTER_XT_SET=m···349346CONFIG_NETCONSOLE=m350347CONFIG_NETCONSOLE_DYNAMIC=y351348CONFIG_VETH=m349349+# CONFIG_NET_VENDOR_AMAZON is not set352350# CONFIG_NET_VENDOR_ARC is not set353351# CONFIG_NET_CADENCE is not set354352# CONFIG_NET_VENDOR_BROADCOM is not set
+6-2
arch/m68k/configs/q40_defconfig
···9191CONFIG_NF_TABLES_NETDEV=m9292CONFIG_NFT_EXTHDR=m9393CONFIG_NFT_META=m9494+CONFIG_NFT_NUMGEN=m9495CONFIG_NFT_CT=m9595-CONFIG_NFT_RBTREE=m9696-CONFIG_NFT_HASH=m9696+CONFIG_NFT_SET_RBTREE=m9797+CONFIG_NFT_SET_HASH=m9798CONFIG_NFT_COUNTER=m9899CONFIG_NFT_LOG=m99100CONFIG_NFT_LIMIT=m···102101CONFIG_NFT_REDIR=m103102CONFIG_NFT_NAT=m104103CONFIG_NFT_QUEUE=m104104+CONFIG_NFT_QUOTA=m105105CONFIG_NFT_REJECT=m106106CONFIG_NFT_COMPAT=m107107+CONFIG_NFT_HASH=m107108CONFIG_NFT_DUP_NETDEV=m108109CONFIG_NFT_FWD_NETDEV=m109110CONFIG_NETFILTER_XT_SET=m···356353CONFIG_NETCONSOLE_DYNAMIC=y357354CONFIG_VETH=m358355# CONFIG_NET_VENDOR_3COM is not set356356+# CONFIG_NET_VENDOR_AMAZON is not set359357# CONFIG_NET_VENDOR_AMD is not set360358# CONFIG_NET_VENDOR_ARC is not set361359# CONFIG_NET_CADENCE is not set
+6-2
arch/m68k/configs/sun3_defconfig
···8888CONFIG_NF_TABLES_NETDEV=m8989CONFIG_NFT_EXTHDR=m9090CONFIG_NFT_META=m9191+CONFIG_NFT_NUMGEN=m9192CONFIG_NFT_CT=m9292-CONFIG_NFT_RBTREE=m9393-CONFIG_NFT_HASH=m9393+CONFIG_NFT_SET_RBTREE=m9494+CONFIG_NFT_SET_HASH=m9495CONFIG_NFT_COUNTER=m9596CONFIG_NFT_LOG=m9697CONFIG_NFT_LIMIT=m···9998CONFIG_NFT_REDIR=m10099CONFIG_NFT_NAT=m101100CONFIG_NFT_QUEUE=m101101+CONFIG_NFT_QUOTA=m102102CONFIG_NFT_REJECT=m103103CONFIG_NFT_COMPAT=m104104+CONFIG_NFT_HASH=m104105CONFIG_NFT_DUP_NETDEV=m105106CONFIG_NFT_FWD_NETDEV=m106107CONFIG_NETFILTER_XT_SET=m···346343CONFIG_NETCONSOLE=m347344CONFIG_NETCONSOLE_DYNAMIC=y348345CONFIG_VETH=m346346+# CONFIG_NET_VENDOR_AMAZON is not set349347CONFIG_SUN3LANCE=y350348# CONFIG_NET_VENDOR_ARC is not set351349# CONFIG_NET_CADENCE is not set
+6-2
arch/m68k/configs/sun3x_defconfig
···8888CONFIG_NF_TABLES_NETDEV=m8989CONFIG_NFT_EXTHDR=m9090CONFIG_NFT_META=m9191+CONFIG_NFT_NUMGEN=m9192CONFIG_NFT_CT=m9292-CONFIG_NFT_RBTREE=m9393-CONFIG_NFT_HASH=m9393+CONFIG_NFT_SET_RBTREE=m9494+CONFIG_NFT_SET_HASH=m9495CONFIG_NFT_COUNTER=m9596CONFIG_NFT_LOG=m9697CONFIG_NFT_LIMIT=m···9998CONFIG_NFT_REDIR=m10099CONFIG_NFT_NAT=m101100CONFIG_NFT_QUEUE=m101101+CONFIG_NFT_QUOTA=m102102CONFIG_NFT_REJECT=m103103CONFIG_NFT_COMPAT=m104104+CONFIG_NFT_HASH=m104105CONFIG_NFT_DUP_NETDEV=m105106CONFIG_NFT_FWD_NETDEV=m106107CONFIG_NETFILTER_XT_SET=m···346343CONFIG_NETCONSOLE=m347344CONFIG_NETCONSOLE_DYNAMIC=y348345CONFIG_VETH=m346346+# CONFIG_NET_VENDOR_AMAZON is not set349347CONFIG_SUN3LANCE=y350348# CONFIG_NET_VENDOR_ARC is not set351349# CONFIG_NET_CADENCE is not set
···6969 int shift = 64 - x86_pmu.cntval_bits;7070 u64 prev_raw_count, new_raw_count;7171 int idx = hwc->idx;7272- s64 delta;7272+ u64 delta;73737474 if (idx == INTEL_PMC_IDX_FIXED_BTS)7575 return 0;
+1-1
arch/x86/events/intel/core.c
···4034403440354035 /* Support full width counters using alternative MSR range */40364036 if (x86_pmu.intel_cap.full_width_write) {40374037- x86_pmu.max_period = x86_pmu.cntval_mask;40374037+ x86_pmu.max_period = x86_pmu.cntval_mask >> 1;40384038 x86_pmu.perfctr = MSR_IA32_PMC0;40394039 pr_cont("full-width counters, ");40404040 }
···8181{8282 unsigned as = crypto_aead_authsize(crypto_aead_reqtfm(&ctx->aead_req));83838484- return ctx->used >= ctx->aead_assoclen + as;8484+ /*8585+ * The minimum amount of memory needed for an AEAD cipher is8686+ * the AAD and in case of decryption the tag.8787+ */8888+ return ctx->used >= ctx->aead_assoclen + (ctx->enc ? 0 : as);8589}86908791static void aead_reset_ctx(struct aead_ctx *ctx)···419415 unsigned int i, reqlen = GET_REQ_SIZE(tfm);420416 int err = -ENOMEM;421417 unsigned long used;422422- size_t outlen;418418+ size_t outlen = 0;423419 size_t usedpages = 0;424420425421 lock_sock(sk);···429425 goto unlock;430426 }431427432432- used = ctx->used;433433- outlen = used;434434-435428 if (!aead_sufficient_data(ctx))436429 goto unlock;430430+431431+ used = ctx->used;432432+ if (ctx->enc)433433+ outlen = used + as;434434+ else435435+ outlen = used - as;437436438437 req = sock_kmalloc(sk, reqlen, GFP_KERNEL);439438 if (unlikely(!req))···451444 aead_request_set_ad(req, ctx->aead_assoclen);452445 aead_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG,453446 aead_async_cb, sk);454454- used -= ctx->aead_assoclen + (ctx->enc ? as : 0);447447+ used -= ctx->aead_assoclen;455448456449 /* take over all tx sgls from ctx */457450 areq->tsgl = sock_kmalloc(sk, sizeof(*areq->tsgl) * sgl->cur,···467460 areq->tsgls = sgl->cur;468461469462 /* create rx sgls */470470- while (iov_iter_count(&msg->msg_iter)) {463463+ while (outlen > usedpages && iov_iter_count(&msg->msg_iter)) {471464 size_t seglen = min_t(size_t, iov_iter_count(&msg->msg_iter),472465 (outlen - usedpages));473466···497490498491 last_rsgl = rsgl;499492500500- /* we do not need more iovecs as we have sufficient memory */501501- if (outlen <= usedpages)502502- break;503503-504493 iov_iter_advance(&msg->msg_iter, err);505494 }506506- err = -EINVAL;495495+507496 /* ensure output buffer is sufficiently large */508508- if (usedpages < outlen)509509- goto free;497497+ if (usedpages < outlen) {498498+ err = -EINVAL;499499+ goto unlock;500500+ }510501511502 aead_request_set_crypt(req, areq->tsgl, areq->first_rsgl.sgl.sg, used,512503 areq->iv);···575570 goto unlock;576571 }577572573573+ /* data length provided by caller via sendmsg/sendpage */578574 used = ctx->used;579575580576 /*···590584 if (!aead_sufficient_data(ctx))591585 goto unlock;592586593593- outlen = used;587587+ /*588588+ * Calculate the minimum output buffer size holding the result of the589589+ * cipher operation. When encrypting data, the receiving buffer is590590+ * larger by the tag length compared to the input buffer as the591591+ * encryption operation generates the tag. For decryption, the input592592+ * buffer provides the tag which is consumed resulting in only the593593+ * plaintext without a buffer for the tag returned to the caller.594594+ */595595+ if (ctx->enc)596596+ outlen = used + as;597597+ else598598+ outlen = used - as;594599595600 /*596601 * The cipher operation input data is reduced by the associated data597602 * length as this data is processed separately later on.598603 */599599- used -= ctx->aead_assoclen + (ctx->enc ? as : 0);604604+ used -= ctx->aead_assoclen;600605601606 /* convert iovecs of output buffers into scatterlists */602602- while (iov_iter_count(&msg->msg_iter)) {607607+ while (outlen > usedpages && iov_iter_count(&msg->msg_iter)) {603608 size_t seglen = min_t(size_t, iov_iter_count(&msg->msg_iter),604609 (outlen - usedpages));605610···637620638621 last_rsgl = rsgl;639622640640- /* we do not need more iovecs as we have sufficient memory */641641- if (outlen <= usedpages)642642- break;643623 iov_iter_advance(&msg->msg_iter, err);644624 }645625646646- err = -EINVAL;647626 /* ensure output buffer is sufficiently large */648648- if (usedpages < outlen)627627+ if (usedpages < outlen) {628628+ err = -EINVAL;649629 goto unlock;630630+ }650631651632 sg_mark_end(sgl->sg + sgl->cur - 1);652633 aead_request_set_crypt(&ctx->aead_req, sgl->sg, ctx->first_rsgl.sgl.sg,
···11591159{11601160 sdev->use_10_for_rw = 1;11611161 sdev->use_10_for_ms = 1;11621162+ sdev->no_write_same = 1;1162116311631164 /* Schedule policy is determined by ->qc_defer() callback and11641165 * it needs to see every deferred qc. Set dev_blocked to 1 to
···14131413 return ret ? ret : count;14141414}1415141514161416+/*14171417+ * NOTE: hot_add attribute is not the usual read-only sysfs attribute. In a14181418+ * sense that reading from this file does alter the state of your system -- it14191419+ * creates a new un-initialized zram device and returns back this device's14201420+ * device_id (or an error code if it fails to create a new device).14211421+ */14161422static struct class_attribute zram_control_class_attrs[] = {14171417- __ATTR_RO(hot_add),14231423+ __ATTR(hot_add, 0400, hot_add_show, NULL),14181424 __ATTR_WO(hot_remove),14191425 __ATTR_NULL,14201426};
+3-2
drivers/crypto/caam/ctrl.c
···558558 * Enable DECO watchdogs and, if this is a PHYS_ADDR_T_64BIT kernel,559559 * long pointers in master configuration register560560 */561561- clrsetbits_32(&ctrl->mcr, MCFGR_AWCACHE_MASK, MCFGR_AWCACHE_CACH |562562- MCFGR_AWCACHE_BUFF | MCFGR_WDENABLE | MCFGR_LARGE_BURST |561561+ clrsetbits_32(&ctrl->mcr, MCFGR_AWCACHE_MASK | MCFGR_LONG_PTR,562562+ MCFGR_AWCACHE_CACH | MCFGR_AWCACHE_BUFF |563563+ MCFGR_WDENABLE | MCFGR_LARGE_BURST |563564 (sizeof(dma_addr_t) == sizeof(u64) ? MCFGR_LONG_PTR : 0));564565565566 /*
+5-6
drivers/crypto/marvell/hash.c
···168168 mv_cesa_adjust_op(engine, &creq->op_tmpl);169169 memcpy_toio(engine->sram, &creq->op_tmpl, sizeof(creq->op_tmpl));170170171171- digsize = crypto_ahash_digestsize(crypto_ahash_reqtfm(req));172172- for (i = 0; i < digsize / 4; i++)173173- writel_relaxed(creq->state[i], engine->regs + CESA_IVDIG(i));174174-175175- mv_cesa_adjust_op(engine, &creq->op_tmpl);176176- memcpy_toio(engine->sram, &creq->op_tmpl, sizeof(creq->op_tmpl));171171+ if (!sreq->offset) {172172+ digsize = crypto_ahash_digestsize(crypto_ahash_reqtfm(req));173173+ for (i = 0; i < digsize / 4; i++)174174+ writel_relaxed(creq->state[i], engine->regs + CESA_IVDIG(i));175175+ }177176178177 if (creq->cache_ptr)179178 memcpy_toio(engine->sram + CESA_SA_DATA_SRAM_OFFSET,
+1-1
drivers/dax/dax.c
···271271 return -ENXIO;272272273273 /* prevent private mappings from being established */274274- if ((vma->vm_flags & VM_SHARED) != VM_SHARED) {274274+ if ((vma->vm_flags & VM_MAYSHARE) != VM_MAYSHARE) {275275 dev_info(dev, "%s: %s: fail, attempted private mapping\n",276276 current->comm, func);277277 return -EINVAL;
···479479static void480480amdgpu_pci_shutdown(struct pci_dev *pdev)481481{482482+ struct drm_device *dev = pci_get_drvdata(pdev);483483+ struct amdgpu_device *adev = dev->dev_private;484484+482485 /* if we are running in a VM, make sure the device483486 * torn down properly on reboot/shutdown.484487 * unfortunately we can't detect certain485488 * hypervisors so just do this all the time.486489 */487487- amdgpu_pci_remove(pdev);490490+ amdgpu_suspend(adev);488491}489492490493static int amdgpu_pmops_suspend(struct device *dev)
+3-1
drivers/isdn/gigaset/ser-gigaset.c
···755755 driver = gigaset_initdriver(GIGASET_MINOR, GIGASET_MINORS,756756 GIGASET_MODULENAME, GIGASET_DEVNAME,757757 &ops, THIS_MODULE);758758- if (!driver)758758+ if (!driver) {759759+ rc = -ENOMEM;759760 goto error;761761+ }760762761763 rc = tty_register_ldisc(N_GIGASET_M101, &gigaset_ldisc);762764 if (rc != 0) {
+4-2
drivers/net/can/usb/peak_usb/pcan_usb_core.c
···870870static void peak_usb_disconnect(struct usb_interface *intf)871871{872872 struct peak_usb_device *dev;873873+ struct peak_usb_device *dev_prev_siblings;873874874875 /* unregister as many netdev devices as siblings */875875- for (dev = usb_get_intfdata(intf); dev; dev = dev->prev_siblings) {876876+ for (dev = usb_get_intfdata(intf); dev; dev = dev_prev_siblings) {876877 struct net_device *netdev = dev->netdev;877878 char name[IFNAMSIZ];878879880880+ dev_prev_siblings = dev->prev_siblings;879881 dev->state &= ~PCAN_USB_STATE_CONNECTED;880882 strncpy(name, netdev->name, IFNAMSIZ);881883882884 unregister_netdev(netdev);883883- free_candev(netdev);884885885886 kfree(dev->cmd_buf);886887 dev->next_siblings = NULL;887888 if (dev->adapter->dev_free)888889 dev->adapter->dev_free(dev);889890891891+ free_candev(netdev);890892 dev_info(&intf->dev, "%s removed\n", name);891893 }892894
···2960296029612961 netdev->netdev_ops = &cxgb4vf_netdev_ops;29622962 netdev->ethtool_ops = &cxgb4vf_ethtool_ops;29632963+ netdev->dev_port = pi->port_id;2963296429642965 /*29652966 * Initialize the hardware/software state for the port.
+63-2
drivers/net/ethernet/ibm/ibmveth.c
···58585959static const char ibmveth_driver_name[] = "ibmveth";6060static const char ibmveth_driver_string[] = "IBM Power Virtual Ethernet Driver";6161-#define ibmveth_driver_version "1.05"6161+#define ibmveth_driver_version "1.06"62626363MODULE_AUTHOR("Santiago Leon <santil@linux.vnet.ibm.com>");6464MODULE_DESCRIPTION("IBM Power Virtual Ethernet Driver");···135135static inline int ibmveth_rxq_frame_offset(struct ibmveth_adapter *adapter)136136{137137 return ibmveth_rxq_flags(adapter) & IBMVETH_RXQ_OFF_MASK;138138+}139139+140140+static inline int ibmveth_rxq_large_packet(struct ibmveth_adapter *adapter)141141+{142142+ return ibmveth_rxq_flags(adapter) & IBMVETH_RXQ_LRG_PKT;138143}139144140145static inline int ibmveth_rxq_frame_length(struct ibmveth_adapter *adapter)···11791174 goto retry_bounce;11801175}1181117611771177+static void ibmveth_rx_mss_helper(struct sk_buff *skb, u16 mss, int lrg_pkt)11781178+{11791179+ int offset = 0;11801180+11811181+ /* only TCP packets will be aggregated */11821182+ if (skb->protocol == htons(ETH_P_IP)) {11831183+ struct iphdr *iph = (struct iphdr *)skb->data;11841184+11851185+ if (iph->protocol == IPPROTO_TCP) {11861186+ offset = iph->ihl * 4;11871187+ skb_shinfo(skb)->gso_type = SKB_GSO_TCPV4;11881188+ } else {11891189+ return;11901190+ }11911191+ } else if (skb->protocol == htons(ETH_P_IPV6)) {11921192+ struct ipv6hdr *iph6 = (struct ipv6hdr *)skb->data;11931193+11941194+ if (iph6->nexthdr == IPPROTO_TCP) {11951195+ offset = sizeof(struct ipv6hdr);11961196+ skb_shinfo(skb)->gso_type = SKB_GSO_TCPV6;11971197+ } else {11981198+ return;11991199+ }12001200+ } else {12011201+ return;12021202+ }12031203+ /* if mss is not set through Large Packet bit/mss in rx buffer,12041204+ * expect that the mss will be written to the tcp header checksum.12051205+ */12061206+ if (lrg_pkt) {12071207+ skb_shinfo(skb)->gso_size = mss;12081208+ } else if (offset) {12091209+ struct tcphdr *tcph = (struct tcphdr *)(skb->data + offset);12101210+12111211+ skb_shinfo(skb)->gso_size = ntohs(tcph->check);12121212+ tcph->check = 0;12131213+ }12141214+}12151215+11821216static int ibmveth_poll(struct napi_struct *napi, int budget)11831217{11841218 struct ibmveth_adapter *adapter =···12261182 int frames_processed = 0;12271183 unsigned long lpar_rc;12281184 struct iphdr *iph;11851185+ u16 mss = 0;1229118612301187restart_poll:12311188 while (frames_processed < budget) {···12441199 int length = ibmveth_rxq_frame_length(adapter);12451200 int offset = ibmveth_rxq_frame_offset(adapter);12461201 int csum_good = ibmveth_rxq_csum_good(adapter);12021202+ int lrg_pkt = ibmveth_rxq_large_packet(adapter);1247120312481204 skb = ibmveth_rxq_get_buffer(adapter);12051205+12061206+ /* if the large packet bit is set in the rx queue12071207+ * descriptor, the mss will be written by PHYP eight12081208+ * bytes from the start of the rx buffer, which is12091209+ * skb->data at this stage12101210+ */12111211+ if (lrg_pkt) {12121212+ __be64 *rxmss = (__be64 *)(skb->data + 8);12131213+12141214+ mss = (u16)be64_to_cpu(*rxmss);12151215+ }1249121612501217 new_skb = NULL;12511218 if (length < rx_copybreak)···12921235 if (iph->check == 0xffff) {12931236 iph->check = 0;12941237 iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl);12951295- adapter->rx_large_packets++;12961238 }12971239 }12401240+ }12411241+12421242+ if (length > netdev->mtu + ETH_HLEN) {12431243+ ibmveth_rx_mss_helper(skb, mss, lrg_pkt);12441244+ adapter->rx_large_packets++;12981245 }1299124613001247 napi_gro_receive(napi, skb); /* send it up */
···696696 priv->pldata = dev_get_platdata(&pdev->dev);697697 priv->netdev = dev;698698 spin_lock_init(&priv->lock);699699+ SET_NETDEV_DEV(dev, &pdev->dev);699700700701 for (i = 0; i < MAX_DMA_CHAN; i++) {701702 if (IS_TX(i))
-2
drivers/net/ethernet/mellanox/mlx5/core/Kconfig
···1818 default n1919 ---help---2020 Ethernet support in Mellanox Technologies ConnectX-4 NIC.2121- Ethernet and Infiniband support in ConnectX-4 are currently mutually2222- exclusive.23212422config MLX5_CORE_EN_DCB2523 bool "Data Center Bridging (DCB) Support"
+8-1
drivers/net/ethernet/smsc/smsc911x.c
···438438 ret = regulator_bulk_get(&pdev->dev,439439 ARRAY_SIZE(pdata->supplies),440440 pdata->supplies);441441- if (ret)441441+ if (ret) {442442+ /*443443+ * Retry on deferrals, else just report the error444444+ * and try to continue.445445+ */446446+ if (ret == -EPROBE_DEFER)447447+ return ret;442448 netdev_err(ndev, "couldn't get regulators %d\n",443449 ret);450450+ }444451445452 /* Request optional RESET GPIO */446453 pdata->reset_gpiod = devm_gpiod_get_optional(&pdev->dev,
···905905int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,906906 u32 flags, phy_interface_t interface)907907{908908+ struct module *ndev_owner = dev->dev.parent->driver->owner;908909 struct mii_bus *bus = phydev->mdio.bus;909910 struct device *d = &phydev->mdio.dev;910911 int err;911912912912- if (!try_module_get(bus->owner)) {913913+ /* For Ethernet device drivers that register their own MDIO bus, we914914+ * will have bus->owner match ndev_mod, so we do not want to increment915915+ * our own module->refcnt here, otherwise we would not be able to916916+ * unload later on.917917+ */918918+ if (ndev_owner != bus->owner && !try_module_get(bus->owner)) {913919 dev_err(&dev->dev, "failed to get the bus module\n");914920 return -EIO;915921 }···977971error:978972 phy_detach(phydev);979973 put_device(d);980980- module_put(bus->owner);974974+ if (ndev_owner != bus->owner)975975+ module_put(bus->owner);981976 return err;982977}983978EXPORT_SYMBOL(phy_attach_direct);···10281021 */10291022void phy_detach(struct phy_device *phydev)10301023{10241024+ struct net_device *dev = phydev->attached_dev;10251025+ struct module *ndev_owner = dev->dev.parent->driver->owner;10311026 struct mii_bus *bus;10321027 int i;10331028···10591050 bus = phydev->mdio.bus;1060105110611052 put_device(&phydev->mdio.dev);10621062- module_put(bus->owner);10531053+ if (ndev_owner != bus->owner)10541054+ module_put(bus->owner);10631055}10641056EXPORT_SYMBOL(phy_detach);10651057
+21
drivers/net/usb/cdc_mbim.c
···602602 .data = CDC_NCM_FLAG_NDP_TO_END,603603};604604605605+/* Some modems (e.g. Telit LE922A6) do not work properly with altsetting606606+ * toggle done in cdc_ncm_bind_common. CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE607607+ * flag is used to avoid this procedure.608608+ */609609+static const struct driver_info cdc_mbim_info_avoid_altsetting_toggle = {610610+ .description = "CDC MBIM",611611+ .flags = FLAG_NO_SETINT | FLAG_MULTI_PACKET | FLAG_WWAN,612612+ .bind = cdc_mbim_bind,613613+ .unbind = cdc_mbim_unbind,614614+ .manage_power = cdc_mbim_manage_power,615615+ .rx_fixup = cdc_mbim_rx_fixup,616616+ .tx_fixup = cdc_mbim_tx_fixup,617617+ .data = CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE,618618+};619619+605620static const struct usb_device_id mbim_devs[] = {606621 /* This duplicate NCM entry is intentional. MBIM devices can607622 * be disguised as NCM by default, and this is necessary to···641626 { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE),642627 .driver_info = (unsigned long)&cdc_mbim_info_ndp_to_end,643628 },629629+630630+ /* Telit LE922A6 in MBIM composition */631631+ { USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x1041, USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE),632632+ .driver_info = (unsigned long)&cdc_mbim_info_avoid_altsetting_toggle,633633+ },634634+644635 /* default entry */645636 { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE),646637 .driver_info = (unsigned long)&cdc_mbim_info_zlp,
+9-5
drivers/net/usb/cdc_ncm.c
···835835836836 iface_no = ctx->data->cur_altsetting->desc.bInterfaceNumber;837837838838+ /* Device-specific flags */839839+ ctx->drvflags = drvflags;840840+838841 /* Reset data interface. Some devices will not reset properly839842 * unless they are configured first. Toggle the altsetting to840840- * force a reset843843+ * force a reset.844844+ * Some other devices do not work properly with this procedure845845+ * that can be avoided using quirk CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE841846 */842842- usb_set_interface(dev->udev, iface_no, data_altsetting);847847+ if (!(ctx->drvflags & CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE))848848+ usb_set_interface(dev->udev, iface_no, data_altsetting);849849+843850 temp = usb_set_interface(dev->udev, iface_no, 0);844851 if (temp) {845852 dev_dbg(&intf->dev, "set interface failed\n");···892885893886 /* finish setting up the device specific data */894887 cdc_ncm_setup(dev);895895-896896- /* Device-specific flags */897897- ctx->drvflags = drvflags;898888899889 /* Allocate the delayed NDP if needed. */900890 if (ctx->drvflags & CDC_NCM_FLAG_NDP_TO_END) {
+20-5
drivers/nvdimm/bus.c
···715715716716u32 nd_cmd_out_size(struct nvdimm *nvdimm, int cmd,717717 const struct nd_cmd_desc *desc, int idx, const u32 *in_field,718718- const u32 *out_field)718718+ const u32 *out_field, unsigned long remainder)719719{720720 if (idx >= desc->out_num)721721 return UINT_MAX;···727727 return in_field[1];728728 else if (nvdimm && cmd == ND_CMD_VENDOR && idx == 2)729729 return out_field[1];730730- else if (!nvdimm && cmd == ND_CMD_ARS_STATUS && idx == 2)731731- return out_field[1] - 8;732732- else if (cmd == ND_CMD_CALL) {730730+ else if (!nvdimm && cmd == ND_CMD_ARS_STATUS && idx == 2) {731731+ /*732732+ * Per table 9-276 ARS Data in ACPI 6.1, out_field[1] is733733+ * "Size of Output Buffer in bytes, including this734734+ * field."735735+ */736736+ if (out_field[1] < 4)737737+ return 0;738738+ /*739739+ * ACPI 6.1 is ambiguous if 'status' is included in the740740+ * output size. If we encounter an output size that741741+ * overshoots the remainder by 4 bytes, assume it was742742+ * including 'status'.743743+ */744744+ if (out_field[1] - 8 == remainder)745745+ return remainder;746746+ return out_field[1] - 4;747747+ } else if (cmd == ND_CMD_CALL) {733748 struct nd_cmd_pkg *pkg = (struct nd_cmd_pkg *) in_field;734749735750 return pkg->nd_size_out;···891876 /* process an output envelope */892877 for (i = 0; i < desc->out_num; i++) {893878 u32 out_size = nd_cmd_out_size(nvdimm, cmd, desc, i,894894- (u32 *) in_env, (u32 *) out_env);879879+ (u32 *) in_env, (u32 *) out_env, 0);895880 u32 copy;896881897882 if (out_size == UINT_MAX) {
···17391739 * This should be done on write(), truncate() and chown().17401740 */17411741 if (!fc->handle_killpriv) {17421742- int kill;17431743-17441742 /*17451743 * ia_mode calculation may have used stale i_mode.17461744 * Refresh and recalculate.···17481750 return ret;1749175117501752 attr->ia_mode = inode->i_mode;17511751- kill = should_remove_suid(entry);17521752- if (kill & ATTR_KILL_SUID) {17531753+ if (inode->i_mode & S_ISUID) {17531754 attr->ia_valid |= ATTR_MODE;17541755 attr->ia_mode &= ~S_ISUID;17551756 }17561756- if (kill & ATTR_KILL_SGID) {17571757+ if ((inode->i_mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) {17571758 attr->ia_valid |= ATTR_MODE;17581759 attr->ia_mode &= ~S_ISGID;17591760 }
···143143 const struct nd_cmd_desc *desc, int idx, void *buf);144144u32 nd_cmd_out_size(struct nvdimm *nvdimm, int cmd,145145 const struct nd_cmd_desc *desc, int idx, const u32 *in_field,146146- const u32 *out_field);146146+ const u32 *out_field, unsigned long remainder);147147int nvdimm_bus_check_dimm_count(struct nvdimm_bus *nvdimm_bus, int dimm_count);148148struct nd_region *nvdimm_pmem_region_create(struct nvdimm_bus *nvdimm_bus,149149 struct nd_region_desc *ndr_desc);
+2-1
include/linux/usb/cdc_ncm.h
···8181#define CDC_NCM_TIMER_INTERVAL_MAX (U32_MAX / NSEC_PER_USEC)82828383/* Driver flags */8484-#define CDC_NCM_FLAG_NDP_TO_END 0x02 /* NDP is placed at end of frame */8484+#define CDC_NCM_FLAG_NDP_TO_END 0x02 /* NDP is placed at end of frame */8585+#define CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE 0x04 /* Avoid altsetting toggle during init */85868687#define cdc_ncm_comm_intf_is_mbim(x) ((x)->desc.bInterfaceSubClass == USB_CDC_SUBCLASS_MBIM && \8788 (x)->desc.bInterfaceProtocol == USB_CDC_PROTO_NONE)
+1
include/uapi/linux/can.h
···196196};197197198198#define CAN_INV_FILTER 0x20000000U /* to be set in can_filter.can_id */199199+#define CAN_RAW_FILTER_MAX 512 /* maximum number of can_filter set via setsockopt() */199200200201#endif /* !_UAPI_CAN_H */
+8-11
kernel/events/core.c
···903903 */904904 cpuctx = __get_cpu_context(ctx);905905906906- /* Only set/clear cpuctx->cgrp if current task uses event->cgrp. */907907- if (perf_cgroup_from_task(current, ctx) != event->cgrp) {908908- /*909909- * We are removing the last cpu event in this context.910910- * If that event is not active in this cpu, cpuctx->cgrp911911- * should've been cleared by perf_cgroup_switch.912912- */913913- WARN_ON_ONCE(!add && cpuctx->cgrp);914914- return;915915- }916916- cpuctx->cgrp = add ? event->cgrp : NULL;906906+ /*907907+ * cpuctx->cgrp is NULL until a cgroup event is sched in or908908+ * ctx->nr_cgroup == 0 .909909+ */910910+ if (add && perf_cgroup_from_task(current, ctx) == event->cgrp)911911+ cpuctx->cgrp = event->cgrp;912912+ else if (!add)913913+ cpuctx->cgrp = NULL;917914}918915919916#else /* !CONFIG_CGROUP_PERF */
···506506 name = class->name;507507 if (!name) {508508 name = __get_key_name(class->key, str);509509- printk("%s", name);509509+ printk(KERN_CONT "%s", name);510510 } else {511511- printk("%s", name);511511+ printk(KERN_CONT "%s", name);512512 if (class->name_version > 1)513513- printk("#%d", class->name_version);513513+ printk(KERN_CONT "#%d", class->name_version);514514 if (class->subclass)515515- printk("/%d", class->subclass);515515+ printk(KERN_CONT "/%d", class->subclass);516516 }517517}518518···522522523523 get_usage_chars(class, usage);524524525525- printk(" (");525525+ printk(KERN_CONT " (");526526 __print_lock_name(class);527527- printk("){%s}", usage);527527+ printk(KERN_CONT "){%s}", usage);528528}529529530530static void print_lockdep_cache(struct lockdep_map *lock)···536536 if (!name)537537 name = __get_key_name(lock->key->subkeys, str);538538539539- printk("%s", name);539539+ printk(KERN_CONT "%s", name);540540}541541542542static void print_lock(struct held_lock *hlock)···551551 barrier();552552553553 if (!class_idx || (class_idx - 1) >= MAX_LOCKDEP_KEYS) {554554- printk("<RELEASED>\n");554554+ printk(KERN_CONT "<RELEASED>\n");555555 return;556556 }557557558558 print_lock_name(lock_classes + class_idx - 1);559559- printk(", at: ");560560- print_ip_sym(hlock->acquire_ip);559559+ printk(KERN_CONT ", at: [<%p>] %pS\n",560560+ (void *)hlock->acquire_ip, (void *)hlock->acquire_ip);561561}562562563563static void lockdep_print_held_locks(struct task_struct *curr)···792792793793 printk("\nnew class %p: %s", class->key, class->name);794794 if (class->name_version > 1)795795- printk("#%d", class->name_version);796796- printk("\n");795795+ printk(KERN_CONT "#%d", class->name_version);796796+ printk(KERN_CONT "\n");797797 dump_stack();798798799799 if (!graph_lock()) {···10711071 return 0;10721072 printk("\n-> #%u", depth);10731073 print_lock_name(target->class);10741074- printk(":\n");10741074+ printk(KERN_CONT ":\n");10751075 print_stack_trace(&target->trace, 6);1076107610771077 return 0;···11021102 if (parent != source) {11031103 printk("Chain exists of:\n ");11041104 __print_lock_name(source);11051105- printk(" --> ");11051105+ printk(KERN_CONT " --> ");11061106 __print_lock_name(parent);11071107- printk(" --> ");11071107+ printk(KERN_CONT " --> ");11081108 __print_lock_name(target);11091109- printk("\n\n");11091109+ printk(KERN_CONT "\n\n");11101110 }1111111111121112 printk(" Possible unsafe locking scenario:\n\n");···11141114 printk(" ---- ----\n");11151115 printk(" lock(");11161116 __print_lock_name(target);11171117- printk(");\n");11171117+ printk(KERN_CONT ");\n");11181118 printk(" lock(");11191119 __print_lock_name(parent);11201120- printk(");\n");11201120+ printk(KERN_CONT ");\n");11211121 printk(" lock(");11221122 __print_lock_name(target);11231123- printk(");\n");11231123+ printk(KERN_CONT ");\n");11241124 printk(" lock(");11251125 __print_lock_name(source);11261126- printk(");\n");11261126+ printk(KERN_CONT ");\n");11271127 printk("\n *** DEADLOCK ***\n\n");11281128}11291129···1359135913601360 printk("%*s->", depth, "");13611361 print_lock_name(class);13621362- printk(" ops: %lu", class->ops);13631363- printk(" {\n");13621362+ printk(KERN_CONT " ops: %lu", class->ops);13631363+ printk(KERN_CONT " {\n");1364136413651365 for (bit = 0; bit < LOCK_USAGE_STATES; bit++) {13661366 if (class->usage_mask & (1 << bit)) {13671367 int len = depth;1368136813691369 len += printk("%*s %s", depth, "", usage_str[bit]);13701370- len += printk(" at:\n");13701370+ len += printk(KERN_CONT " at:\n");13711371 print_stack_trace(class->usage_traces + bit, len);13721372 }13731373 }13741374 printk("%*s }\n", depth, "");1375137513761376- printk("%*s ... key at: ",depth,"");13771377- print_ip_sym((unsigned long)class->key);13761376+ printk("%*s ... key at: [<%p>] %pS\n",13771377+ depth, "", class->key, class->key);13781378}1379137913801380/*···14371437 if (middle_class != unsafe_class) {14381438 printk("Chain exists of:\n ");14391439 __print_lock_name(safe_class);14401440- printk(" --> ");14401440+ printk(KERN_CONT " --> ");14411441 __print_lock_name(middle_class);14421442- printk(" --> ");14421442+ printk(KERN_CONT " --> ");14431443 __print_lock_name(unsafe_class);14441444- printk("\n\n");14441444+ printk(KERN_CONT "\n\n");14451445 }1446144614471447 printk(" Possible interrupt unsafe locking scenario:\n\n");···14491449 printk(" ---- ----\n");14501450 printk(" lock(");14511451 __print_lock_name(unsafe_class);14521452- printk(");\n");14521452+ printk(KERN_CONT ");\n");14531453 printk(" local_irq_disable();\n");14541454 printk(" lock(");14551455 __print_lock_name(safe_class);14561456- printk(");\n");14561456+ printk(KERN_CONT ");\n");14571457 printk(" lock(");14581458 __print_lock_name(middle_class);14591459- printk(");\n");14591459+ printk(KERN_CONT ");\n");14601460 printk(" <Interrupt>\n");14611461 printk(" lock(");14621462 __print_lock_name(safe_class);14631463- printk(");\n");14631463+ printk(KERN_CONT ");\n");14641464 printk("\n *** DEADLOCK ***\n\n");14651465}14661466···14971497 print_lock(prev);14981498 printk("which would create a new lock dependency:\n");14991499 print_lock_name(hlock_class(prev));15001500- printk(" ->");15001500+ printk(KERN_CONT " ->");15011501 print_lock_name(hlock_class(next));15021502- printk("\n");15021502+ printk(KERN_CONT "\n");1503150315041504 printk("\nbut this new dependency connects a %s-irq-safe lock:\n",15051505 irqclass);···1521152115221522 lockdep_print_held_locks(curr);1523152315241524- printk("\nthe dependencies between %s-irq-safe lock", irqclass);15251525- printk(" and the holding lock:\n");15241524+ printk("\nthe dependencies between %s-irq-safe lock and the holding lock:\n", irqclass);15261525 if (!save_trace(&prev_root->trace))15271526 return 0;15281527 print_shortest_lock_dependencies(backwards_entry, prev_root);···16931694 printk(" ----\n");16941695 printk(" lock(");16951696 __print_lock_name(prev);16961696- printk(");\n");16971697+ printk(KERN_CONT ");\n");16971698 printk(" lock(");16981699 __print_lock_name(next);16991699- printk(");\n");17001700+ printk(KERN_CONT ");\n");17001701 printk("\n *** DEADLOCK ***\n\n");17011702 printk(" May be due to missing lock nesting notation\n\n");17021703}···18901891 graph_unlock();18911892 printk("\n new dependency: ");18921893 print_lock_name(hlock_class(prev));18931893- printk(" => ");18941894+ printk(KERN_CONT " => ");18941895 print_lock_name(hlock_class(next));18951895- printk("\n");18961896+ printk(KERN_CONT "\n");18961897 dump_stack();18971898 return graph_lock();18981899 }···23422343 printk(" ----\n");23432344 printk(" lock(");23442345 __print_lock_name(class);23452345- printk(");\n");23462346+ printk(KERN_CONT ");\n");23462347 printk(" <Interrupt>\n");23472348 printk(" lock(");23482349 __print_lock_name(class);23492349- printk(");\n");23502350+ printk(KERN_CONT ");\n");23502351 printk("\n *** DEADLOCK ***\n\n");23512352}23522353···25212522void print_irqtrace_events(struct task_struct *curr)25222523{25232524 printk("irq event stamp: %u\n", curr->irq_events);25242524- printk("hardirqs last enabled at (%u): ", curr->hardirq_enable_event);25252525- print_ip_sym(curr->hardirq_enable_ip);25262526- printk("hardirqs last disabled at (%u): ", curr->hardirq_disable_event);25272527- print_ip_sym(curr->hardirq_disable_ip);25282528- printk("softirqs last enabled at (%u): ", curr->softirq_enable_event);25292529- print_ip_sym(curr->softirq_enable_ip);25302530- printk("softirqs last disabled at (%u): ", curr->softirq_disable_event);25312531- print_ip_sym(curr->softirq_disable_ip);25252525+ printk("hardirqs last enabled at (%u): [<%p>] %pS\n",25262526+ curr->hardirq_enable_event, (void *)curr->hardirq_enable_ip,25272527+ (void *)curr->hardirq_enable_ip);25282528+ printk("hardirqs last disabled at (%u): [<%p>] %pS\n",25292529+ curr->hardirq_disable_event, (void *)curr->hardirq_disable_ip,25302530+ (void *)curr->hardirq_disable_ip);25312531+ printk("softirqs last enabled at (%u): [<%p>] %pS\n",25322532+ curr->softirq_enable_event, (void *)curr->softirq_enable_ip,25332533+ (void *)curr->softirq_enable_ip);25342534+ printk("softirqs last disabled at (%u): [<%p>] %pS\n",25352535+ curr->softirq_disable_event, (void *)curr->softirq_disable_ip,25362536+ (void *)curr->softirq_disable_ip);25322537}2533253825342539static int HARDIRQ_verbose(struct lock_class *class)···32383235 if (very_verbose(class)) {32393236 printk("\nacquire class [%p] %s", class->key, class->name);32403237 if (class->name_version > 1)32413241- printk("#%d", class->name_version);32423242- printk("\n");32383238+ printk(KERN_CONT "#%d", class->name_version);32393239+ printk(KERN_CONT "\n");32433240 dump_stack();32443241 }32453242···33813378 printk("%s/%d is trying to release lock (",33823379 curr->comm, task_pid_nr(curr));33833380 print_lockdep_cache(lock);33843384- printk(") at:\n");33813381+ printk(KERN_CONT ") at:\n");33853382 print_ip_sym(ip);33863383 printk("but there are no more locks to release!\n");33873384 printk("\nother info that might help us debug this:\n");···38743871 printk("%s/%d is trying to contend lock (",38753872 curr->comm, task_pid_nr(curr));38763873 print_lockdep_cache(lock);38773877- printk(") at:\n");38743874+ printk(KERN_CONT ") at:\n");38783875 print_ip_sym(ip);38793876 printk("but there are no locks held!\n");38803877 printk("\nother info that might help us debug this:\n");
+66-2
kernel/locking/rtmutex.c
···65656666static void fixup_rt_mutex_waiters(struct rt_mutex *lock)6767{6868- if (!rt_mutex_has_waiters(lock))6969- clear_rt_mutex_waiters(lock);6868+ unsigned long owner, *p = (unsigned long *) &lock->owner;6969+7070+ if (rt_mutex_has_waiters(lock))7171+ return;7272+7373+ /*7474+ * The rbtree has no waiters enqueued, now make sure that the7575+ * lock->owner still has the waiters bit set, otherwise the7676+ * following can happen:7777+ *7878+ * CPU 0 CPU 1 CPU27979+ * l->owner=T18080+ * rt_mutex_lock(l)8181+ * lock(l->lock)8282+ * l->owner = T1 | HAS_WAITERS;8383+ * enqueue(T2)8484+ * boost()8585+ * unlock(l->lock)8686+ * block()8787+ *8888+ * rt_mutex_lock(l)8989+ * lock(l->lock)9090+ * l->owner = T1 | HAS_WAITERS;9191+ * enqueue(T3)9292+ * boost()9393+ * unlock(l->lock)9494+ * block()9595+ * signal(->T2) signal(->T3)9696+ * lock(l->lock)9797+ * dequeue(T2)9898+ * deboost()9999+ * unlock(l->lock)100100+ * lock(l->lock)101101+ * dequeue(T3)102102+ * ==> wait list is empty103103+ * deboost()104104+ * unlock(l->lock)105105+ * lock(l->lock)106106+ * fixup_rt_mutex_waiters()107107+ * if (wait_list_empty(l) {108108+ * l->owner = owner109109+ * owner = l->owner & ~HAS_WAITERS;110110+ * ==> l->owner = T1111111+ * }112112+ * lock(l->lock)113113+ * rt_mutex_unlock(l) fixup_rt_mutex_waiters()114114+ * if (wait_list_empty(l) {115115+ * owner = l->owner & ~HAS_WAITERS;116116+ * cmpxchg(l->owner, T1, NULL)117117+ * ===> Success (l->owner = NULL)118118+ *119119+ * l->owner = owner120120+ * ==> l->owner = T1121121+ * }122122+ *123123+ * With the check for the waiter bit in place T3 on CPU2 will not124124+ * overwrite. All tasks fiddling with the waiters bit are125125+ * serialized by l->lock, so nothing else can modify the waiters126126+ * bit. If the bit is set then nothing can change l->owner either127127+ * so the simple RMW is safe. The cmpxchg() will simply fail if it128128+ * happens in the middle of the RMW because the waiters bit is129129+ * still set.130130+ */131131+ owner = READ_ONCE(*p);132132+ if (owner & RT_MUTEX_HAS_WAITERS)133133+ WRITE_ONCE(*p, owner & ~RT_MUTEX_HAS_WAITERS);70134}7113572136/*