[v5,09/12] cryptodev: update symmetric session structure

Message ID 20190110145022.42883-10-roy.fan.zhang@intel.com (mailing list archive)
State Accepted, archived
Delegated to: akhil goyal
Headers
Series cryptodev: change qp conf and sym session |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Fan Zhang Jan. 10, 2019, 2:50 p.m. UTC
  This patch updates the rte_cryptodev_sym_session structure for
cryptodev library. The updates include a changed session private
data array and an added nb_drivers field. They are used to
calculate the correct session header size and ensure safe access
of the session private data.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
---
 doc/guides/prog_guide/img/cryptodev_sym_sess.svg | 701 ++++++++++++-----------
 doc/guides/rel_notes/deprecation.rst             |   6 -
 doc/guides/rel_notes/release_19_02.rst           |   7 +-
 lib/librte_cryptodev/rte_cryptodev.c             | 100 +++-
 lib/librte_cryptodev/rte_cryptodev.h             |   8 +-
 lib/librte_cryptodev/rte_cryptodev_pmd.h         |  13 +-
 6 files changed, 444 insertions(+), 391 deletions(-)
  

Patch

diff --git a/doc/guides/prog_guide/img/cryptodev_sym_sess.svg b/doc/guides/prog_guide/img/cryptodev_sym_sess.svg
index a807cebac..5c843f736 100644
--- a/doc/guides/prog_guide/img/cryptodev_sym_sess.svg
+++ b/doc/guides/prog_guide/img/cryptodev_sym_sess.svg
@@ -19,33 +19,31 @@ 
    id="svg70"
    sodipodi:docname="cryptodev_sym_sess.svg"
    style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-rule:evenodd;stroke-linecap:square;stroke-miterlimit:3"
-   inkscape:version="0.92.1 r15371"><metadata
-   id="metadata74"><rdf:RDF><cc:Work
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
-   pagecolor="#ffffff"
-   bordercolor="#666666"
-   borderopacity="1"
-   objecttolerance="10"
-   gridtolerance="10"
-   guidetolerance="10"
-   inkscape:pageopacity="0"
-   inkscape:pageshadow="2"
-   inkscape:window-width="1920"
-   inkscape:window-height="1051"
-   id="namedview72"
-   showgrid="false"
-   inkscape:zoom="1.7495789"
-   inkscape:cx="208.74719"
-   inkscape:cy="216.52777"
-   inkscape:window-x="-9"
-   inkscape:window-y="-9"
-   inkscape:window-maximized="0"
-   inkscape:current-layer="g68-0" />
-	<style
-   type="text/css"
-   id="style2">
-	<![CDATA[
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"><metadata
+     id="metadata74"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="956"
+     id="namedview72"
+     showgrid="false"
+     inkscape:zoom="1.7495789"
+     inkscape:cx="208.74719"
+     inkscape:cy="216.52777"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="shape18-1-4" /><style
+     type="text/css"
+     id="style2"><![CDATA[
 		.st1 {fill:url(#grad0-4);stroke:#386288;stroke-width:0.75}
 		.st2 {fill:#386288;font-family:Calibri;font-size:0.833336em}
 		.st3 {visibility:visible}
@@ -56,337 +54,340 @@ 
 		.st8 {font-size:0.799995em}
 		.st9 {font-size:0.799995em;font-weight:bold}
 		.st10 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
-	]]>
-	</style>
-
-	<defs
-   id="Patterns_And_Gradients"><marker
-   inkscape:isstock="true"
-   style="overflow:visible"
-   id="marker5421"
-   refX="0"
-   refY="0"
-   orient="auto"
-   inkscape:stockid="Arrow2Lend"><path
-     transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
-     d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-     style="fill:#41719c;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-     id="path5419"
-     inkscape:connector-curvature="0" /></marker><marker
-   inkscape:stockid="Arrow2Lend"
-   orient="auto"
-   refY="0"
-   refX="0"
-   id="Arrow2Lend"
-   style="overflow:visible"
-   inkscape:isstock="true"><path
-     id="path5004"
-     style="fill:#41719c;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-     d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-     transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
-     inkscape:connector-curvature="0" /></marker><marker
-   inkscape:stockid="Arrow1Lend"
-   orient="auto"
-   refY="0"
-   refX="0"
-   id="Arrow1Lend"
-   style="overflow:visible"
-   inkscape:isstock="true"><path
-     id="path4986"
-     d="M 0,0 5,-5 -12.5,0 5,5 Z"
-     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-     transform="matrix(-0.8,0,0,-0.8,-10,0)"
-     inkscape:connector-curvature="0" /></marker>
-		<linearGradient
-   id="grad0-4"
-   x1="0"
-   y1="0"
-   x2="1"
-   y2="0"
-   gradientTransform="rotate(60,0.5,0.5)">
-			<stop
-   offset="0"
-   stop-color="#e8ebef"
-   stop-opacity="1"
-   id="stop4" />
-			<stop
-   offset="0.24"
-   stop-color="#f4f5f7"
-   stop-opacity="1"
-   id="stop6" />
-			<stop
-   offset="0.54"
-   stop-color="#feffff"
-   stop-opacity="1"
-   id="stop8" />
-		</linearGradient>
-	<filter
-   id="filter_2-4"><feGaussianBlur
-     stdDeviation="2"
-     id="feGaussianBlur12-0" /></filter><linearGradient
-   inkscape:collect="always"
-   xlink:href="#grad0-4"
-   id="linearGradient189"
-   gradientTransform="scale(0.8787489,1.1379815)"
-   x1="-0.42674366"
-   y1="0.98859203"
-   x2="176.71146"
-   y2="0.98859203"
-   gradientUnits="userSpaceOnUse" /><filter
-   id="filter_2-5"><feGaussianBlur
-     stdDeviation="2"
-     id="feGaussianBlur12-8" /></filter><filter
-   id="filter_2-3"><feGaussianBlur
-     stdDeviation="2"
-     id="feGaussianBlur12-2" /></filter><linearGradient
-   inkscape:collect="always"
-   xlink:href="#grad0-4"
-   id="linearGradient189-7"
-   gradientTransform="scale(0.8787489,1.1379815)"
-   x1="-0.42674366"
-   y1="0.98859203"
-   x2="176.71146"
-   y2="0.98859203"
-   gradientUnits="userSpaceOnUse" /><linearGradient
-   inkscape:collect="always"
-   xlink:href="#grad0-4"
-   id="linearGradient500"
-   gradientTransform="matrix(0.8787489,0,0,1.1379815,12.431599,21.739241)"
-   x1="-0.42674366"
-   y1="0.98859203"
-   x2="176.71146"
-   y2="0.98859203"
-   gradientUnits="userSpaceOnUse" /></defs>
-	<defs
-   id="Filters">
-		<filter
-   id="filter_2">
-			<feGaussianBlur
-   stdDeviation="2"
-   id="feGaussianBlur12" />
-		</filter>
-	</defs>
-	<g
-   id="g68"
-   transform="matrix(1,0,0,0.41409874,-12.807629,-5.4621159)">
-		<title
-   id="title16">Page-1</title>
-		<g
-   id="shape18-1"
-   transform="translate(0.749889,-0.75)">
-			<title
-   id="title18">Rounded Rectangle.12</title>
-			<desc
-   id="desc20">Crypto Symmetric Session</desc>
-			<path
-   d="M 19.211599,224.06924 H 160.5716 a 6.77735,6.77735 0 0 0 6.77,-6.77 V 30.019241 a 6.77735,6.77735 0 0 0 -6.77,-6.78 H 19.211599 a 6.77735,6.77735 0 0 0 -6.78,6.78 V 217.29924 a 6.77735,6.77735 0 0 0 6.78,6.77 z"
-   class="st1"
-   id="path22"
-   style="fill:url(#linearGradient500);stroke:#386288;stroke-width:0.75"
-   inkscape:connector-curvature="0" />
-			<text
-   x="63.123039"
-   y="28.531481"
-   class="st2"
-   id="text24"
-   style="font-size:16.97244835px;font-family:Calibri;fill:#386288;stroke-width:1.69723928"
-   transform="scale(0.58919214,1.6972392)">Crypto Symmetric Session</text>
-
-		</g>
-		<g
-   id="shape19-6"
-   transform="translate(10.6711,-9.82087)">
-			<title
-   id="title27">Rounded Rectangle.13</title>
-			<desc
-   id="desc29">Private Session Data</desc>
-		</g>
-		<g
-   id="shape20-12"
-   transform="matrix(1,0,0,2.5278193,23.531375,-309.78186)">
-			<title
-   id="title39">Rounded Rectangle.15</title>
-			<desc
-   id="desc41">void *sess_private_data[]</desc>
-			<path
-   d="m 5.91,202.33 h 123.25 a 5.90925,5.90925 -180 0 0 5.91,-5.9 v -36.37 a 5.90925,5.90925 -180 0 0 -5.91,-5.91 H 5.91 A 5.90925,5.90925 -180 0 0 0,160.06 v 36.37 a 5.90925,5.90925 -180 0 0 5.91,5.9 z"
-   class="st7"
-   id="path43"
-   inkscape:connector-curvature="0"
-   style="fill:#ffffff;stroke:#41719c;stroke-width:0.75" />
-			<text
-   x="14.072042"
-   y="159.1931"
-   class="st6"
-   id="text65"
-   style="font-size:11.41061592px;font-family:Calibri;fill:#41719c;stroke-width:1.14105785"
-   transform="scale(0.92359087,1.0827305)">void *sess_private_data[] <tspan
-   x="-3.5230706"
-   class="st9"
-   id="tspan47"
-   style="font-weight:bold;font-size:9.12843513px;stroke-width:1.14105785" /></text>
-
-		<rect
-   style="fill:none;fill-opacity:1;stroke:#41719c;stroke-width:0.73305672;stroke-opacity:1"
-   id="rect4604"
-   width="15.968175"
-   height="14.230948"
-   x="13.494645"
-   y="181.68814" /><rect
-   style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.73305672;stroke-linecap:square;stroke-miterlimit:3;stroke-opacity:1"
-   id="rect4604-7"
-   width="15.968174"
-   height="14.230948"
-   x="29.46282"
-   y="181.68814" /><rect
-   style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.73305672;stroke-linecap:square;stroke-miterlimit:3;stroke-opacity:1"
-   id="rect4604-7-6"
-   width="15.968174"
-   height="14.230948"
-   x="45.430992"
-   y="181.68814" /><rect
-   style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.73305672;stroke-linecap:square;stroke-miterlimit:3;stroke-opacity:1"
-   id="rect4604-7-6-9"
-   width="15.968174"
-   height="14.230948"
-   x="61.399166"
-   y="181.68814" /><rect
-   style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.73305672;stroke-linecap:square;stroke-miterlimit:3;stroke-opacity:1"
-   id="rect4604-7-6-9-8"
-   width="15.968174"
-   height="14.230948"
-   x="77.36734"
-   y="181.68814" /><rect
-   style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.73305672;stroke-linecap:square;stroke-miterlimit:3;stroke-opacity:1"
-   id="rect4604-7-6-9-8-9"
-   width="15.968174"
-   height="14.230948"
-   x="93.33551"
-   y="181.68814" /><rect
-   style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.73305672;stroke-linecap:square;stroke-miterlimit:3;stroke-opacity:1"
-   id="rect4604-7-6-9-8-9-6"
-   width="15.968174"
-   height="14.230948"
-   x="109.30369"
-   y="181.68814" /><path
-   style="fill:none;fill-opacity:1;stroke:#41719c;stroke-width:0.72427988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
-   d="m 117.64885,196.01764 0.22164,18.77485 44.6966,-0.0725 -0.22163,-20.00716 16.84434,0.43494"
-   id="path5030"
-   inkscape:connector-curvature="0" /></g>
-	</g>
-<g
-   transform="translate(190.70887,-0.53319281)"
-   id="g68-0"><title
-     id="title16-2">Page-1</title><g
-     id="shape18-1-4"
-     transform="matrix(1,0,0,0.57815109,0.749889,-0.11722686)"><title
-   id="title18-4">Rounded Rectangle.12</title><desc
-   id="desc20-6">Crypto Symmetric Session</desc><path
-   inkscape:connector-curvature="0"
-   d="m 6.78,202.33 h 141.36 a 6.77735,6.77735 -180 0 0 6.77,-6.77 V 8.28 A 6.77735,6.77735 -180 0 0 148.14,1.5 H 6.78 A 6.77735,6.77735 -180 0 0 0,8.28 v 187.28 a 6.77735,6.77735 -180 0 0 6.78,6.77 z"
-   class="st1"
-   id="path22-0"
-   style="fill:url(#linearGradient189);stroke:#386288;stroke-width:0.75" /><text
-   x="26.317923"
-   y="17.335487"
-   class="st2"
-   id="text24-5"
-   style="font-size:14.02988338px;font-family:Calibri;fill:#386288;stroke-width:1.40298378"
-   transform="scale(0.71276665,1.4029837)">Crypto Driver Private Session</text>
-
-</g><g
-     id="shape19-6-5"
-     transform="matrix(1.022976,0,0,0.71529071,9.1114734,-39.403506)"><title
-   id="title27-2">Rounded Rectangle.13</title><desc
-   id="desc29-0">Private Session Data</desc><g
-   id="shadow19-7-1"
-   transform="translate(0.345598,1.97279)"
-   class="st3"
-   style="visibility:visible"><path
+	]]></style><defs
+     id="Patterns_And_Gradients"><marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5421"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"><path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#41719c;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5419"
+         inkscape:connector-curvature="0" /></marker><marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lend"
+       style="overflow:visible"
+       inkscape:isstock="true"><path
+         id="path5004"
+         style="fill:#41719c;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" /></marker><marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible"
+       inkscape:isstock="true"><path
+         id="path4986"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         inkscape:connector-curvature="0" /></marker><linearGradient
+       id="grad0-4"
+       x1="0"
+       y1="0"
+       x2="1"
+       y2="0"
+       gradientTransform="rotate(60,0.5,0.5)"><stop
+         offset="0"
+         stop-color="#e8ebef"
+         stop-opacity="1"
+         id="stop4" /><stop
+         offset="0.24"
+         stop-color="#f4f5f7"
+         stop-opacity="1"
+         id="stop6" /><stop
+         offset="0.54"
+         stop-color="#feffff"
+         stop-opacity="1"
+         id="stop8" /></linearGradient><filter
+       id="filter_2-4"><feGaussianBlur
+         stdDeviation="2"
+         id="feGaussianBlur12-0" /></filter><linearGradient
+       inkscape:collect="always"
+       xlink:href="#grad0-4"
+       id="linearGradient189"
+       gradientTransform="scale(0.8787489,1.1379815)"
+       x1="-0.42674366"
+       y1="0.98859203"
+       x2="176.71146"
+       y2="0.98859203"
+       gradientUnits="userSpaceOnUse" /><filter
+       id="filter_2-5"><feGaussianBlur
+         stdDeviation="2"
+         id="feGaussianBlur12-8" /></filter><filter
+       id="filter_2-3"><feGaussianBlur
+         stdDeviation="2"
+         id="feGaussianBlur12-2" /></filter><linearGradient
+       inkscape:collect="always"
+       xlink:href="#grad0-4"
+       id="linearGradient189-7"
+       gradientTransform="scale(0.8787489,1.1379815)"
+       x1="-0.42674366"
+       y1="0.98859203"
+       x2="176.71146"
+       y2="0.98859203"
+       gradientUnits="userSpaceOnUse" /><linearGradient
+       inkscape:collect="always"
+       xlink:href="#grad0-4"
+       id="linearGradient500"
+       gradientTransform="matrix(0.87785006,0,0,2.0116303,15.940232,20.619826)"
+       x1="-0.42674366"
+       y1="0.98859203"
+       x2="176.71146"
+       y2="0.98859203"
+       gradientUnits="userSpaceOnUse" /></defs><defs
+     id="Filters"><filter
+       id="filter_2"><feGaussianBlur
+         stdDeviation="2"
+         id="feGaussianBlur12" /></filter></defs><g
+     transform="matrix(1,0,0,0.41409874,-12.05774,-5.77269)"
+     id="shape18-1"><title
+       id="title18">Rounded Rectangle.12</title><desc
+       id="desc20">Crypto Symmetric Session</desc><path
+       inkscape:connector-curvature="0"
+       style="fill:url(#linearGradient500);stroke:#386288;stroke-width:0.99665654"
+       id="path22"
+       class="st1"
+       d="M 22.713297,378.28219 H 163.92871 a 6.7704177,11.980443 0 0 0 6.76307,-11.96745 V 35.256532 A 6.7704177,11.980443 0 0 0 163.92871,23.271405 H 22.713297 A 6.7704177,11.980443 0 0 0 15.940232,35.256532 V 366.31474 a 6.7704177,11.980443 0 0 0 6.773065,11.96745 z" /></g><g
+     transform="matrix(1,0,0,0.41409874,-2.136529,-9.5289258)"
+     id="shape19-6"><title
+       id="title27">Rounded Rectangle.13</title><desc
+       id="desc29">Private Session Data</desc></g><g
+     id="g4079"
+     transform="matrix(0.9997031,0,0,1.070998,206.15511,-5.6465883)"><path
+       style="fill:#ffffff;stroke:#41719c;stroke-width:1.15444767"
+       inkscape:connector-curvature="0"
+       id="path43"
+       class="st7"
+       d="m -189.55935,139.62776 h 123.25 a 5.90925,14.000977 0 0 0 5.91,-13.97905 V 39.476089 a 5.90925,14.000977 0 0 0 -5.91,-14.002757 h -123.25 a 5.90925,14.000977 0 0 0 -5.91,14.002757 v 86.172621 a 5.90925,14.000977 0 0 0 5.91,13.97905 z" /><rect
+       y="118.60072"
+       x="-181.11736"
+       height="14.896484"
+       width="15.968175"
+       id="rect4604"
+       style="fill:none;fill-opacity:1;stroke:#41719c;stroke-width:0.75000221;stroke-opacity:1" /><rect
+       y="118.60072"
+       x="-165.14919"
+       height="14.896484"
+       width="15.968174"
+       id="rect4604-7"
+       style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.75000221;stroke-linecap:square;stroke-miterlimit:3;stroke-opacity:1" /><rect
+       y="118.60072"
+       x="-149.181"
+       height="14.896484"
+       width="15.968174"
+       id="rect4604-7-6"
+       style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.75000221;stroke-linecap:square;stroke-miterlimit:3;stroke-opacity:1" /><rect
+       y="118.60072"
+       x="-133.21283"
+       height="14.896484"
+       width="15.968174"
+       id="rect4604-7-6-9"
+       style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.75000221;stroke-linecap:square;stroke-miterlimit:3;stroke-opacity:1" /><rect
+       y="118.60072"
+       x="-117.24466"
+       height="14.896484"
+       width="15.968174"
+       id="rect4604-7-6-9-8"
+       style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.75000221;stroke-linecap:square;stroke-miterlimit:3;stroke-opacity:1" /><rect
+       y="118.60072"
+       x="-101.27649"
+       height="14.896484"
+       width="15.968174"
+       id="rect4604-7-6-9-8-9"
+       style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.75000221;stroke-linecap:square;stroke-miterlimit:3;stroke-opacity:1" /><rect
+       y="118.60072"
+       x="-85.308311"
+       height="14.896484"
+       width="15.968174"
+       id="rect4604-7-6-9-8-9-6"
+       style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#41719c;stroke-width:0.75000221;stroke-linecap:square;stroke-miterlimit:3;stroke-opacity:1" /><text
+       transform="scale(0.48757738,2.0509565)"
+       style="font-size:21.61449814px;font-family:Calibri;overflow:visible;color-interpolation-filters:sRGB;fill:#41719c;fill-rule:evenodd;stroke-width:2.16144276;stroke-linecap:square;stroke-miterlimit:3"
+       id="text65-3"
+       class="st6"
+       y="50.793892"
+       x="-374.07562" />
+<text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:28.99296951px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.72482425"
+       x="-172.30693"
+       y="83.585136"
+       id="text4129"
+       transform="scale(1.035044,0.96614251)"><tspan
+         sodipodi:role="line"
+         id="tspan4127"
+         x="-172.30693"
+         y="109.23712"
+         style="stroke-width:0.72482425"></tspan></text>
+<text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:28.99296951px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.72482425"
+       x="-174.79263"
+       y="75.713715"
+       id="text4139"
+       transform="scale(1.035044,0.96614251)"><tspan
+         sodipodi:role="line"
+         id="tspan4137"
+         x="-174.79263"
+         y="101.3657"
+         style="stroke-width:0.72482425"></tspan></text>
+</g><path
+     style="fill:none;fill-opacity:1;stroke:#41719c;stroke-width:0.86738265px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+     d="m 128.80127,137.90141 -0.20704,20.06801 44.6966,-0.10399 0.20705,-93.424256 16.84434,0.62379"
+     id="path5030"
      inkscape:connector-curvature="0"
-     d="m 5.91,202.33 h 123.25 a 5.90925,5.90925 -180 0 0 5.91,-5.9 v -92.78 a 5.90925,5.90925 -180 0 0 -5.91,-5.91 H 5.91 A 5.90925,5.90925 -180 0 0 0,103.65 v 92.78 a 5.90925,5.90925 -180 0 0 5.91,5.9 z"
-     class="st4"
-     id="path31-8"
-     style="fill:#bdd0e9;fill-opacity:0.25;stroke:#bdd0e9;stroke-opacity:0.25;filter:url(#filter_2)" /></g><path
-   inkscape:connector-curvature="0"
-   d="m 5.91,202.33 h 123.25 a 5.90925,5.90925 -180 0 0 5.91,-5.9 v -92.78 a 5.90925,5.90925 -180 0 0 -5.91,-5.91 H 5.91 A 5.90925,5.90925 -180 0 0 0,103.65 v 92.78 a 5.90925,5.90925 -180 0 0 5.91,5.9 z"
-   class="st5"
-   id="path34-8"
-   style="fill:#a6b6cd;stroke:#41719c;stroke-width:0.75" /><text
-   x="34.639763"
-   y="119.96548"
-   class="st6"
-   id="text36-7"
-   style="font-size:13.15105343px;font-family:Calibri;fill:#41719c;stroke-width:1.31510115"
-   transform="scale(0.76039781,1.3151011)">Private Session Data</text>
-
+     sodipodi:nodetypes="ccccc" /><g
+     transform="matrix(1,0,0,0.57815109,191.45876,-0.65041967)"
+     id="shape18-1-4"><title
+       id="title18-4">Rounded Rectangle.12</title><desc
+       id="desc20-6">Crypto Symmetric Session</desc><path
+       style="fill:url(#linearGradient189);stroke:#386288;stroke-width:0.75"
+       id="path22-0"
+       class="st1"
+       d="m 6.78,202.33 h 141.36 a 6.77735,6.77735 -180 0 0 6.77,-6.77 V 8.28 A 6.77735,6.77735 -180 0 0 148.14,1.5 H 6.78 A 6.77735,6.77735 -180 0 0 0,8.28 v 187.28 a 6.77735,6.77735 -180 0 0 6.78,6.77 z"
+       inkscape:connector-curvature="0" /><text
+       transform="scale(0.71276665,1.4029837)"
+       style="font-size:14.02988338px;font-family:Calibri;fill:#386288;stroke-width:1.40298378"
+       id="text24-5"
+       class="st2"
+       y="17.335487"
+       x="26.317923">Crypto Driver Private Session</text>
+<text
+       transform="scale(0.71276665,1.4029837)"
+       style="font-size:14.02988338px;font-family:Calibri;overflow:visible;color-interpolation-filters:sRGB;fill:#386288;fill-rule:evenodd;stroke-width:1.40298378;stroke-linecap:square;stroke-miterlimit:3"
+       id="text24-5-3"
+       class="st2"
+       y="19.076277"
+       x="-240.04274">Crypto Symmetric Session</text>
+<text
+       transform="scale(0.71276665,1.4029837)"
+       style="font-size:14.02988338px;font-family:Calibri;overflow:visible;color-interpolation-filters:sRGB;fill:#386288;fill-rule:evenodd;stroke-width:1.40298378;stroke-linecap:square;stroke-miterlimit:3"
+       id="text24-5-5"
+       class="st2"
+       y="46.557648"
+       x="-241.24557">uint16_t nb_drivers;</text>
+<text
+       transform="scale(0.71276665,1.4029837)"
+       style="font-size:14.02988338px;font-family:Calibri;overflow:visible;color-interpolation-filters:sRGB;fill:#386288;fill-rule:evenodd;stroke-width:1.40298378;stroke-linecap:square;stroke-miterlimit:3"
+       id="text24-5-6"
+       class="st2"
+       y="98.349464"
+       x="-240.04272">struct {</text>
+<text
+       transform="scale(0.71276665,1.4029837)"
+       style="font-size:14.02988338px;font-family:Calibri;overflow:visible;color-interpolation-filters:sRGB;fill:#386288;fill-rule:evenodd;stroke-width:1.40298378;stroke-linecap:square;stroke-miterlimit:3"
+       id="text24-5-2"
+       class="st2"
+       y="115.26107"
+       x="-204.55865">void *data;</text>
+<text
+       transform="scale(0.71276665,1.4029837)"
+       style="font-size:14.02988338px;font-family:Calibri;overflow:visible;color-interpolation-filters:sRGB;fill:#386288;fill-rule:evenodd;stroke-width:1.40298378;stroke-linecap:square;stroke-miterlimit:3"
+       id="text24-5-9"
+       class="st2"
+       y="144.3279"
+       x="-240.04274">} session_data[];</text>
 </g><g
-     id="shape18-1-4-7"
-     transform="matrix(1,0,0,0.57815109,0.90591369,163.94402)"><title
-   id="title18-4-3">Rounded Rectangle.12</title><desc
-   id="desc20-6-5">Crypto Symmetric Session</desc><path
-   inkscape:connector-curvature="0"
-   d="m 6.78,202.33 h 141.36 a 6.77735,6.77735 -180 0 0 6.77,-6.77 V 8.28 A 6.77735,6.77735 -180 0 0 148.14,1.5 H 6.78 A 6.77735,6.77735 -180 0 0 0,8.28 v 187.28 a 6.77735,6.77735 -180 0 0 6.78,6.77 z"
-   class="st1"
-   id="path22-0-8"
-   style="fill:url(#linearGradient189-7);stroke:#386288;stroke-width:0.75" /><text
-   x="26.317923"
-   y="17.335487"
-   class="st2"
-   id="text24-5-1"
-   style="font-size:14.02988338px;font-family:Calibri;fill:#386288;stroke-width:1.40298378"
-   transform="scale(0.71276665,1.4029837)">Crypto Driver Private Session</text>
-
+     transform="matrix(1.022976,0,0,0.71529071,199.82034,-39.936699)"
+     id="shape19-6-5"><title
+       id="title27-2">Rounded Rectangle.13</title><desc
+       id="desc29-0">Private Session Data</desc><g
+       style="visibility:visible"
+       class="st3"
+       transform="translate(0.345598,1.97279)"
+       id="shadow19-7-1"><path
+         style="fill:#bdd0e9;fill-opacity:0.25;stroke:#bdd0e9;stroke-opacity:0.25;filter:url(#filter_2)"
+         id="path31-8"
+         class="st4"
+         d="m 5.91,202.33 h 123.25 a 5.90925,5.90925 -180 0 0 5.91,-5.9 v -92.78 a 5.90925,5.90925 -180 0 0 -5.91,-5.91 H 5.91 A 5.90925,5.90925 -180 0 0 0,103.65 v 92.78 a 5.90925,5.90925 -180 0 0 5.91,5.9 z"
+         inkscape:connector-curvature="0" /></g><path
+       style="fill:#a6b6cd;stroke:#41719c;stroke-width:0.75"
+       id="path34-8"
+       class="st5"
+       d="m 5.91,202.33 h 123.25 a 5.90925,5.90925 -180 0 0 5.91,-5.9 v -92.78 a 5.90925,5.90925 -180 0 0 -5.91,-5.91 H 5.91 A 5.90925,5.90925 -180 0 0 0,103.65 v 92.78 a 5.90925,5.90925 -180 0 0 5.91,5.9 z"
+       inkscape:connector-curvature="0" /><text
+       transform="scale(0.76039781,1.3151011)"
+       style="font-size:13.15105343px;font-family:Calibri;fill:#41719c;stroke-width:1.31510115"
+       id="text36-7"
+       class="st6"
+       y="119.96548"
+       x="34.639763">Private Session Data</text>
 </g><g
-     id="shape19-6-5-1"
-     transform="matrix(1.022976,0,0,0.71529071,9.2675037,124.65774)"><title
-   id="title27-2-4">Rounded Rectangle.13</title><desc
-   id="desc29-0-9">Private Session Data</desc><g
-   id="shadow19-7-1-8"
-   transform="translate(0.345598,1.97279)"
-   class="st3"
-   style="visibility:visible"><path
-     inkscape:connector-curvature="0"
-     d="m 5.91,202.33 h 123.25 a 5.90925,5.90925 -180 0 0 5.91,-5.9 v -92.78 a 5.90925,5.90925 -180 0 0 -5.91,-5.91 H 5.91 A 5.90925,5.90925 -180 0 0 0,103.65 v 92.78 a 5.90925,5.90925 -180 0 0 5.91,5.9 z"
-     class="st4"
-     id="path31-8-4"
-     style="fill:#bdd0e9;fill-opacity:0.25;stroke:#bdd0e9;stroke-opacity:0.25;filter:url(#filter_2-3)" /></g><path
-   inkscape:connector-curvature="0"
-   d="m 5.91,202.33 h 123.25 a 5.90925,5.90925 -180 0 0 5.91,-5.9 v -92.78 a 5.90925,5.90925 -180 0 0 -5.91,-5.91 H 5.91 A 5.90925,5.90925 -180 0 0 0,103.65 v 92.78 a 5.90925,5.90925 -180 0 0 5.91,5.9 z"
-   class="st5"
-   id="path34-8-3"
-   style="fill:#a6b6cd;stroke:#41719c;stroke-width:0.75" /><text
-   x="34.639763"
-   y="119.96548"
-   class="st6"
-   id="text36-7-6"
-   style="font-size:13.15105343px;font-family:Calibri;fill:#41719c;stroke-width:1.31510115"
-   transform="scale(0.76039781,1.3151011)">Private Session Data</text>
-
+     transform="matrix(1,0,0,0.57815109,191.61478,163.41083)"
+     id="shape18-1-4-7"><title
+       id="title18-4-3">Rounded Rectangle.12</title><desc
+       id="desc20-6-5">Crypto Symmetric Session</desc><path
+       style="fill:url(#linearGradient189-7);stroke:#386288;stroke-width:0.75"
+       id="path22-0-8"
+       class="st1"
+       d="m 6.78,202.33 h 141.36 a 6.77735,6.77735 -180 0 0 6.77,-6.77 V 8.28 A 6.77735,6.77735 -180 0 0 148.14,1.5 H 6.78 A 6.77735,6.77735 -180 0 0 0,8.28 v 187.28 a 6.77735,6.77735 -180 0 0 6.78,6.77 z"
+       inkscape:connector-curvature="0" /><text
+       transform="scale(0.71276665,1.4029837)"
+       style="font-size:14.02988338px;font-family:Calibri;fill:#386288;stroke-width:1.40298378"
+       id="text24-5-1"
+       class="st2"
+       y="17.335487"
+       x="26.317923">Crypto Driver Private Session</text>
+</g><g
+     transform="matrix(1.022976,0,0,0.71529071,199.97637,124.12455)"
+     id="shape19-6-5-1"><title
+       id="title27-2-4">Rounded Rectangle.13</title><desc
+       id="desc29-0-9">Private Session Data</desc><g
+       style="visibility:visible"
+       class="st3"
+       transform="translate(0.345598,1.97279)"
+       id="shadow19-7-1-8"><path
+         style="fill:#bdd0e9;fill-opacity:0.25;stroke:#bdd0e9;stroke-opacity:0.25;filter:url(#filter_2-3)"
+         id="path31-8-4"
+         class="st4"
+         d="m 5.91,202.33 h 123.25 a 5.90925,5.90925 -180 0 0 5.91,-5.9 v -92.78 a 5.90925,5.90925 -180 0 0 -5.91,-5.91 H 5.91 A 5.90925,5.90925 -180 0 0 0,103.65 v 92.78 a 5.90925,5.90925 -180 0 0 5.91,5.9 z"
+         inkscape:connector-curvature="0" /></g><path
+       style="fill:#a6b6cd;stroke:#41719c;stroke-width:0.75"
+       id="path34-8-3"
+       class="st5"
+       d="m 5.91,202.33 h 123.25 a 5.90925,5.90925 -180 0 0 5.91,-5.9 v -92.78 a 5.90925,5.90925 -180 0 0 -5.91,-5.91 H 5.91 A 5.90925,5.90925 -180 0 0 0,103.65 v 92.78 a 5.90925,5.90925 -180 0 0 5.91,5.9 z"
+       inkscape:connector-curvature="0" /><text
+       transform="scale(0.76039781,1.3151011)"
+       style="font-size:13.15105343px;font-family:Calibri;fill:#41719c;stroke-width:1.31510115"
+       id="text36-7-6"
+       class="st6"
+       y="119.96548"
+       x="34.639763">Private Session Data</text>
 </g><text
-     xml:space="preserve"
+     id="text5070"
+     y="145.4136"
+     x="248.24945"
      style="font-style:normal;font-weight:normal;font-size:30.00008774px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75000221"
-     x="57.540585"
-     y="145.94679"
-     id="text5070"><tspan
-       sodipodi:role="line"
+     xml:space="preserve"><tspan
+       style="stroke-width:0.75000221"
+       y="171.95665"
+       x="248.24945"
        id="tspan5068"
-       x="57.540585"
-       y="173.31679"
-       style="stroke-width:0.75000221"></tspan></text>
+       sodipodi:role="line" /></text>
 <text
-     xml:space="preserve"
+     id="text5074"
+     y="142.68553"
+     x="251.28064"
      style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.00006485px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75000221"
-     x="60.571766"
-     y="143.21872"
-     id="text5074"><tspan
-       sodipodi:role="line"
+     xml:space="preserve"><tspan
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.00006485px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.75000221"
+       y="142.68553"
+       x="251.28064"
        id="tspan5072"
-       x="60.571766"
-       y="143.21872"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.00006485px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.75000221">...</tspan></text>
+       sodipodi:role="line">...</tspan></text>
 <path
-     style="fill:none;stroke:#41719c;stroke-width:0.74499911px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5421)"
-     d="M -158.57624,71.371238 -157.38,232.04055 -1.1215065,232.19212"
+     inkscape:connector-curvature="0"
      id="path5076"
-     inkscape:connector-curvature="0" /></g></svg>
+     d="m 32.13263,137.96494 1.19624,93.60569 156.25849,0.0883"
+     style="fill:none;stroke:#41719c;stroke-width:0.56864393px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5421)" /></svg>
\ No newline at end of file
diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index df12835eb..f1ca879cc 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -74,9 +74,3 @@  Deprecation Notices
 * security: New field ``uint64_t opaque_data`` is planned to be added into
   ``rte_security_session`` structure. That would allow upper layer to easily
   associate/de-associate some user defined data with the security session.
-
-* cryptodev: several API and ABI changes are planned for rte_cryptodev
-  in v19.02:
-
-  - The size and layout of ``rte_cryptodev_sym_session`` will change
-    to fix existing issues.
diff --git a/doc/guides/rel_notes/release_19_02.rst b/doc/guides/rel_notes/release_19_02.rst
index ace4bcfe7..b488a6d35 100644
--- a/doc/guides/rel_notes/release_19_02.rst
+++ b/doc/guides/rel_notes/release_19_02.rst
@@ -170,7 +170,8 @@  API Changes
 * cryptodev: a new function ``rte_cryptodev_sym_session_pool_create()`` is
   introduced. This function is now mandatory when creating symmetric session
   header mempool. Please note all crypto applications are required to use this
-  function from now on.
+  function from now on. Failed to do so will cause
+  ``rte_cryptodev_sym_session_create()`` function call return error.
 
 
 ABI Changes
@@ -195,6 +196,10 @@  ABI Changes
   ``rte_cryptodev_qp_conf`` has been added two parameters of symmetric session
   mempool and symmetric session private data mempool.
 
+* cryptodev: as shown in the the 18.11 deprecation notice, the structure
+  ``rte_cryptodev_sym_session`` has been updated to contain more information
+  to ensure safely accessing the session and session private data.
+
 
 Shared Library Versions
 -----------------------
diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c
index 4a105b08d..2a8e07d27 100644
--- a/lib/librte_cryptodev/rte_cryptodev.c
+++ b/lib/librte_cryptodev/rte_cryptodev.c
@@ -978,6 +978,30 @@  rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
 		return -EINVAL;
 	}
 
+	if (qp_conf->mp_session) {
+		struct rte_cryptodev_sym_session_pool_private_data *pool_priv;
+		uint32_t obj_size = qp_conf->mp_session->elt_size;
+		uint32_t obj_priv_size = qp_conf->mp_session_private->elt_size;
+		struct rte_cryptodev_sym_session s = {0};
+
+		pool_priv = rte_mempool_get_priv(qp_conf->mp_session);
+		if (!pool_priv || qp_conf->mp_session->private_data_size <
+				sizeof(*pool_priv)) {
+			CDEV_LOG_ERR("Invalid mempool\n");
+			return -EINVAL;
+		}
+
+		s.nb_drivers = pool_priv->nb_drivers;
+
+		if ((rte_cryptodev_sym_get_existing_header_session_size(&s) >
+			obj_size) || (s.nb_drivers <= dev->driver_id) ||
+			rte_cryptodev_sym_get_private_session_size(dev_id) >
+				obj_priv_size) {
+			CDEV_LOG_ERR("Invalid mempool\n");
+			return -EINVAL;
+		}
+	}
+
 	if (dev->data->dev_started) {
 		CDEV_LOG_ERR(
 		    "device %d must be stopped to allow configuration", dev_id);
@@ -1172,6 +1196,8 @@  rte_cryptodev_sym_session_init(uint8_t dev_id,
 		struct rte_mempool *mp)
 {
 	struct rte_cryptodev *dev;
+	uint32_t sess_priv_sz = rte_cryptodev_sym_get_private_session_size(
+			dev_id);
 	uint8_t index;
 	int ret;
 
@@ -1180,11 +1206,16 @@  rte_cryptodev_sym_session_init(uint8_t dev_id,
 	if (sess == NULL || xforms == NULL || dev == NULL)
 		return -EINVAL;
 
+	if (mp->elt_size < sess_priv_sz)
+		return -EINVAL;
+
 	index = dev->driver_id;
+	if (index >= sess->nb_drivers)
+		return -EINVAL;
 
 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->sym_session_configure, -ENOTSUP);
 
-	if (sess->sess_private_data[index] == NULL) {
+	if (sess->sess_data[index].data == NULL) {
 		ret = dev->dev_ops->sym_session_configure(dev, xforms,
 							sess, mp);
 		if (ret < 0) {
@@ -1273,10 +1304,29 @@  rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,
 	return mp;
 }
 
+static unsigned int
+rte_cryptodev_sym_session_data_size(struct rte_cryptodev_sym_session *sess)
+{
+	return (sizeof(sess->sess_data[0]) * sess->nb_drivers);
+}
+
 struct rte_cryptodev_sym_session *
 rte_cryptodev_sym_session_create(struct rte_mempool *mp)
 {
 	struct rte_cryptodev_sym_session *sess;
+	struct rte_cryptodev_sym_session_pool_private_data *pool_priv;
+
+	if (!mp) {
+		CDEV_LOG_ERR("Invalid mempool\n");
+		return NULL;
+	}
+
+	pool_priv = rte_mempool_get_priv(mp);
+
+	if (!pool_priv || mp->private_data_size < sizeof(*pool_priv)) {
+		CDEV_LOG_ERR("Invalid mempool\n");
+		return NULL;
+	}
 
 	/* Allocate a session structure from the session pool */
 	if (rte_mempool_get(mp, (void **)&sess)) {
@@ -1284,10 +1334,14 @@  rte_cryptodev_sym_session_create(struct rte_mempool *mp)
 		return NULL;
 	}
 
+	sess->nb_drivers = pool_priv->nb_drivers;
+
+
 	/* Clear device session pointer.
 	 * Include the flag indicating presence of user data
 	 */
-	memset(sess, 0, (sizeof(void *) * nb_drivers) + sizeof(uint8_t));
+	memset(sess->sess_data, 0,
+			rte_cryptodev_sym_session_data_size(sess));
 
 	return sess;
 }
@@ -1395,16 +1449,20 @@  rte_cryptodev_asym_session_free(struct rte_cryptodev_asym_session *sess)
 	return 0;
 }
 
-
 unsigned int
 rte_cryptodev_sym_get_header_session_size(void)
 {
 	/*
-	 * Header contains pointers to the private data
-	 * of all registered drivers, and a flag which
-	 * indicates presence of user data
+	 * Header contains pointers to the private data of all registered
+	 * drivers and all necessary information to ensure safely clear
+	 * or free al session.
 	 */
-	return ((sizeof(void *) * nb_drivers) + sizeof(uint8_t));
+	struct rte_cryptodev_sym_session s = {0};
+
+	s.nb_drivers = nb_drivers;
+
+	return (unsigned int)(sizeof(s) +
+			rte_cryptodev_sym_session_data_size(&s));
 }
 
 unsigned int __rte_experimental
@@ -1414,7 +1472,8 @@  rte_cryptodev_sym_get_existing_header_session_size(
 	if (!sess)
 		return 0;
 	else
-		return rte_cryptodev_sym_get_header_session_size();
+		return (unsigned int)(sizeof(*sess) +
+				rte_cryptodev_sym_session_data_size(sess));
 }
 
 unsigned int __rte_experimental
@@ -1432,7 +1491,6 @@  unsigned int
 rte_cryptodev_sym_get_private_session_size(uint8_t dev_id)
 {
 	struct rte_cryptodev *dev;
-	unsigned int header_size = sizeof(void *) * nb_drivers;
 	unsigned int priv_sess_size;
 
 	if (!rte_cryptodev_pmd_is_valid_dev(dev_id))
@@ -1445,16 +1503,7 @@  rte_cryptodev_sym_get_private_session_size(uint8_t dev_id)
 
 	priv_sess_size = (*dev->dev_ops->sym_session_get_size)(dev);
 
-	/*
-	 * If size is less than session header size,
-	 * return the latter, as this guarantees that
-	 * sessionless operations will work
-	 */
-	if (priv_sess_size < header_size)
-		return header_size;
-
 	return priv_sess_size;
-
 }
 
 unsigned int __rte_experimental
@@ -1486,15 +1535,10 @@  rte_cryptodev_sym_session_set_user_data(
 					void *data,
 					uint16_t size)
 {
-	uint16_t off_set = sizeof(void *) * nb_drivers;
-	uint8_t *user_data_present = (uint8_t *)sess + off_set;
-
 	if (sess == NULL)
 		return -EINVAL;
 
-	*user_data_present = 1;
-	off_set += sizeof(uint8_t);
-	rte_memcpy((uint8_t *)sess + off_set, data, size);
+	rte_memcpy(sess->sess_data + sess->nb_drivers, data, size);
 	return 0;
 }
 
@@ -1502,14 +1546,10 @@  void * __rte_experimental
 rte_cryptodev_sym_session_get_user_data(
 					struct rte_cryptodev_sym_session *sess)
 {
-	uint16_t off_set = sizeof(void *) * nb_drivers;
-	uint8_t *user_data_present = (uint8_t *)sess + off_set;
-
-	if (sess == NULL || !*user_data_present)
+	if (sess == NULL)
 		return NULL;
 
-	off_set += sizeof(uint8_t);
-	return (uint8_t *)sess + off_set;
+	return (void *)(sess->sess_data + sess->nb_drivers);
 }
 
 /** Initialise rte_crypto_op mempool element */
diff --git a/lib/librte_cryptodev/rte_cryptodev.h b/lib/librte_cryptodev/rte_cryptodev.h
index 39e3bfffb..cc22a1878 100644
--- a/lib/librte_cryptodev/rte_cryptodev.h
+++ b/lib/librte_cryptodev/rte_cryptodev.h
@@ -957,8 +957,12 @@  rte_cryptodev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
  * has a fixed algo, key, op-type, digest_len etc.
  */
 struct rte_cryptodev_sym_session {
-	__extension__ void *sess_private_data[0];
-	/**< Private symmetric session material */
+	uint16_t nb_drivers;
+	/**< number of elements in sess_data array */
+	__extension__ struct {
+		void *data;
+	} sess_data[0];
+	/**< Driver specific session material, variable size */
 };
 
 /** Cryptodev asymmetric crypto session */
diff --git a/lib/librte_cryptodev/rte_cryptodev_pmd.h b/lib/librte_cryptodev/rte_cryptodev_pmd.h
index f15c9af30..defe05ea0 100644
--- a/lib/librte_cryptodev/rte_cryptodev_pmd.h
+++ b/lib/librte_cryptodev/rte_cryptodev_pmd.h
@@ -475,14 +475,23 @@  RTE_INIT(init_ ##driver_id)\
 static inline void *
 get_sym_session_private_data(const struct rte_cryptodev_sym_session *sess,
 		uint8_t driver_id) {
-	return sess->sess_private_data[driver_id];
+	if (unlikely(sess->nb_drivers <= driver_id))
+		return NULL;
+
+	return sess->sess_data[driver_id].data;
 }
 
 static inline void
 set_sym_session_private_data(struct rte_cryptodev_sym_session *sess,
 		uint8_t driver_id, void *private_data)
 {
-	sess->sess_private_data[driver_id] = private_data;
+	if (unlikely(sess->nb_drivers <= driver_id)) {
+		CDEV_LOG_ERR("Set private data for driver %u not allowed\n",
+				driver_id);
+		return;
+	}
+
+	sess->sess_data[driver_id].data = private_data;
 }
 
 static inline void *