patches for DPDK stable branches
 help / color / mirror / Atom feed
From: luca.boccassi@gmail.com
To: Anatoly Burakov <anatoly.burakov@intel.com>
Cc: dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'malloc: fix end for bounded elements' has been queued to LTS release 16.11.5
Date: Fri, 26 Jan 2018 13:12:40 +0000	[thread overview]
Message-ID: <20180126131332.15346-10-luca.boccassi@gmail.com> (raw)
In-Reply-To: <20180126131332.15346-1-luca.boccassi@gmail.com>

Hi,

FYI, your patch has been queued to LTS release 16.11.5

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 01/28/18. So please
shout if anyone has objections.

Thanks.

Luca Boccassi

---
>From 8d84c383b7262434ff8e93e03be60fdb2a3e07db Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Thu, 21 Dec 2017 16:54:24 +0000
Subject: [PATCH] malloc: fix end for bounded elements

[ upstream commit 20d2159d4640a1844a5856d8d8df86cf0b24b7c1 ]

In cases when alignment is bigger than boundary, we may incorrectly
calculate end of a bounded malloc element.

Consider this: suppose we are allocating a bounded malloc element
that should be of 128 bytes in size, bounded to 128 bytes and
aligned on a 256-byte boundary. Suppose our malloc element ends
at 0x140 - that is, 256 plus one cacheline.

So, right at the start, we are aligning our new_data_start to
include the required element size, and to be aligned on a specified
boundary - so new_data_start becomes 0. This fails the following
bounds check, because our element cannot go above 128 bytes from
the start, and we are at 320. So, we enter the bounds handling
branch.

While we're in there, we are aligning end_pt to our boundedness
requirement of 128 byte, and end up with 0x100 (since 256 is
128-byte aligned). We recalculate new_data_size and it stays at
0, however our end is at 0x100, which is beyond the 128 byte
boundary, and we report inability to reserve a bounded element
when we could have.

This patch adds an end_pt recalculation after new_data_start
adjustment - we already know that size <= bound, so we can do it
safely - and we then correctly report that we can, in fact, try
using this element for bounded malloc allocation.

Fixes: fafcc11985a2 ("mem: rework memzone to be allocated by malloc")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 lib/librte_eal/common/malloc_elem.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/librte_eal/common/malloc_elem.c b/lib/librte_eal/common/malloc_elem.c
index 77a86151b..e2bd3ac21 100644
--- a/lib/librte_eal/common/malloc_elem.c
+++ b/lib/librte_eal/common/malloc_elem.c
@@ -98,6 +98,7 @@ elem_start_pt(struct malloc_elem *elem, size_t size, unsigned align,
 	if ((new_data_start & bmask) != ((end_pt - 1) & bmask)) {
 		end_pt = RTE_ALIGN_FLOOR(end_pt, bound);
 		new_data_start = RTE_ALIGN_FLOOR((end_pt - size), align);
+		end_pt = new_data_start + size;
 		if (((end_pt - 1) & bmask) != (new_data_start & bmask))
 			return NULL;
 	}
-- 
2.14.2

  parent reply	other threads:[~2018-01-26 13:14 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-26 13:12 [dpdk-stable] patch 'kni: fix build with kernel 4.15' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'eal: update assertion macro' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'contigmem: fix build on FreeBSD 12' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'mem: fix mmap error check on huge page attach' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'app/testpmd: fix crash of txonly with multiple segments' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'mbuf: cleanup function to get last segment' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'bus/pci: fix interrupt handler type' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'memzone: fix leak on allocation error' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'malloc: protect stats with lock' " luca.boccassi
2018-01-26 13:12 ` luca.boccassi [this message]
2018-01-26 13:12 ` [dpdk-stable] patch 'vfio: fix enabled check on error' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'pmdinfogen: fix cross compilation for ARM big endian' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'lpm: fix ARM big endian build' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'net/i40e: " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'net/ixgbe: " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'examples/l3fwd-power: fix Rx without interrupt' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'examples/l3fwd-power: fix frequency detection' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'net/nfp: fix MTU settings' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'net/nfp: fix jumbo " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'net/nfp: fix CRC strip check behaviour' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'net/thunderx: fix multi segment Tx function return' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'net/szedata2: fix check of mmap return value' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'net/bonding: fix activated slave in 8023ad mode' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'net/qede: fix to reject config with no Rx queue' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'ethdev: fix missing imissed counter in xstats' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'ethdev: fix typo in functions comment' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'net/i40e: fix VLAN offload setting' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'net/fm10k: fix logical port delete' " luca.boccassi
2018-01-26 13:12 ` [dpdk-stable] patch 'net/igb: fix Tx queue number assignment' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'vhost: fix dequeue zero copy with virtio1' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/virtio: fix incorrect cast' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/virtio: fix vector Rx flushing' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'examples/vhost: fix sending ARP packet to self' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/ixgbe: fix the failure of number of Tx queue check' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/i40e/base: fix NVM lock' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/i40e/base: fix link LED blink' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/i40e/base: fix compile issue for GCC 6.3' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/ixgbe/base: add media type of fixed fiber' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/i40e: fix VSI MAC filter on primary address change' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/bnxt: parse checksum offload flags' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/bonding: fix setting slave MAC addresses' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'ethdev: fix link autonegotiation value' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/pcap: fix the NUMA id display in logs' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/ixgbe: fix max queue number for VF' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/i40e: fix VF reset stats crash' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/ixgbe: fix mailbox interrupt handler' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/e1000: " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/mlx5: fix deadlock of link status alarm' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'vhost: fix error code check when creating thread' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'examples/vhost: fix startup check' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'pdump: fix error check when creating/canceling thread' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'app/procinfo: add compilation option in config' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'test: register test as failed if setup failed' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'test/table: fix uninitialized parameter' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'test/memzone: fix wrong test' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'test/memzone: fix NULL freeing' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'test/memzone: fix freeing test' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'test/crypto: fix missing include' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix corner case for SPI value' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/i40e: fix flag for MAC address write' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'vhost: fix mbuf free' " luca.boccassi
2018-01-26 13:13 ` [dpdk-stable] patch 'net/i40e: fix flow director Rx resource defect' " luca.boccassi
2018-02-07 16:46   ` [dpdk-stable] patch 'keepalive: fix state alignment' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'eal/x86: use lock-prefixed instructions for SMP barrier' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'mbuf: fix NULL freeing when debug enabled' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'crypto/qat: fix null auth algo overwrite' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/enic: fix crash due to static max number of queues' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/mlx5: fix missing RSS capability' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/ena: do not set Tx L4 offloads in Rx path' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/virtio: fix Rx and Tx handler selection for ARM32' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/virtio: fix queue flushing with vector Rx enabled' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/virtio: fix memory leak when reinitializing device' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/virtio: fix typo in function name' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/i40e: fix VF Rx interrupt enabling' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/ixgbe: " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/e1000: " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/bnxt: fix size of Tx ring in HW' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/qede/base: fix VF LRO tunnel configuration' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'eal/ppc: remove the braces in memory barrier macros' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'mk: support renamed Makefile in external project' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/ixgbe: fix reset error handling' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'test/pmd_perf: declare variables as static' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'examples/bond: check mbuf allocation' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'mk: fix external build' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'test/memzone: handle previously allocated memzones' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'usertools/devbind: remove unused function' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/bonding: check error of MAC address setting' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'net/qede: fix few log messages' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'app/testpmd: fix port index in RSS forward config' " luca.boccassi
2018-02-07 16:46     ` [dpdk-stable] patch 'app/testpmd: fix port topology " luca.boccassi
2018-02-07 16:47     ` [dpdk-stable] patch 'examples/ip_pipeline: fix timer period unit' " luca.boccassi
2018-02-07 16:47     ` [dpdk-stable] patch 'test/reorder: fix memory leak' " luca.boccassi
2018-02-07 16:47     ` [dpdk-stable] patch 'test/ring_perf: " luca.boccassi
2018-02-07 16:47     ` [dpdk-stable] patch 'test/table: " luca.boccassi
2018-02-07 16:47     ` [dpdk-stable] patch 'test/timer_perf: " luca.boccassi
2018-02-07 16:47     ` [dpdk-stable] patch 'net/i40e: fix Rx interrupt' " luca.boccassi
2018-02-09 10:40     ` [dpdk-stable] patch 'net/bnxt: fix Rx checksum flags' " Luca Boccassi
2018-02-09 10:40       ` [dpdk-stable] patch 'net/bnxt: fix link speed setting with autoneg off' " Luca Boccassi
2018-02-11 12:49         ` [dpdk-stable] patch 'eal/ppc: support sPAPR IOMMU for vfio-pci' " Luca Boccassi
2018-02-11 12:49           ` [dpdk-stable] patch 'igb_uio: switch to new irq function for MSI-X' " Luca Boccassi
2018-02-15 12:03             ` [dpdk-stable] patch 'ethdev: fix data alignment' " Luca Boccassi
2018-02-15 12:03               ` [dpdk-stable] patch 'net/virtio: fix mbuf data offset for simple Rx' " Luca Boccassi
2018-02-15 12:03               ` [dpdk-stable] patch 'net/virtio: fix resuming port with Rx vector path' " Luca Boccassi
2018-02-15 12:03               ` [dpdk-stable] patch 'net/vhost: fix log messages on create/destroy' " Luca Boccassi
2018-02-15 12:03               ` [dpdk-stable] patch 'net/virtio-user: fix start with kernel vhost' " Luca Boccassi
2018-02-15 12:03               ` [dpdk-stable] patch 'examples/exception_path: align stats on cache line' " Luca Boccassi
2018-02-15 12:03               ` [dpdk-stable] patch 'doc: fix outdated link to IPsec white paper' " Luca Boccassi
2018-02-11 12:49           ` [dpdk-stable] patch 'igb_uio: fix IRQ disable on recent kernels' " Luca Boccassi
2018-02-11 12:49           ` [dpdk-stable] patch 'igb_uio: fix MSI-X IRQ assignment with new IRQ function' " Luca Boccassi
2018-02-09 10:40       ` [dpdk-stable] patch 'net/i40e: check multi-driver option parsing' " Luca Boccassi
2018-02-09 10:40       ` [dpdk-stable] patch 'app/testpmd: fix flow director filter' " Luca Boccassi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180126131332.15346-10-luca.boccassi@gmail.com \
    --to=luca.boccassi@gmail.com \
    --cc=anatoly.burakov@intel.com \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).