Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Feb 2023 18:11:25 +0800
From:      Zhenlei Huang <zlei@FreeBSD.org>
To:        Gleb Smirnoff <glebius@freebsd.org>
Cc:        src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org
Subject:   Re: git: 8bce8d28abe6 - main - jail: Avoid multipurpose return value of function prison_ip_restrict()
Message-ID:  <DFF01C89-0B7C-40E2-AA6D-9B794A759E03@FreeBSD.org>
In-Reply-To: <Y8GzjNMleGOLchR6@FreeBSD.org>
References:  <202301131046.30DAkA0F024400@gitrepo.freebsd.org> <Y8GzjNMleGOLchR6@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--Apple-Mail=_281FF14D-CED0-49A3-816F-155DC72D3787
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Hi Gleb,

> On Jan 14, 2023, at 3:39 AM, Gleb Smirnoff <glebius@freebsd.org> =
wrote:
>=20
>  Zhenlei,
>=20
> a couple concise assignments missed:
>=20
> Z> @@ -1876,15 +1871,15 @@ kern_jail_set(struct thread *td, struct uio =
*optuio, int flags)
> Z>  				continue;
> Z>  			}
> Z>  #endif
> Z> -			if (prison_ip_restrict(tpr, PR_INET, NULL)) {
> Z> -				redo_ip4 =3D 1;
> Z> +			if (!prison_ip_restrict(tpr, PR_INET, NULL)) {
> Z> +				redo_ip4 =3D true;
> Z>  				descend =3D 0;
> Z>  			}
> Z>  		}
> Z>  	}
>=20
> 	redo_ip4 =3D !prison_ip_restrict(tpr, PR_INET, NULL);

I think that is wrong, as `prison_ip_restrict` is called in loop round.
`redo_ip4` might flip to false on next round.

So the previous logic is right.

> +    redo_ip4 =3D !prison_ip_restrict(tpr, PR_INET, &ip4);

Should be `redo_ip4 |=3D !prison_ip_restrict(tpr, PR_INET, &ip4);`



>=20
> Z> @@ -1896,8 +1891,8 @@ kern_jail_set(struct thread *td, struct uio =
*optuio, int flags)
> Z>  				continue;
> Z>  			}
> Z>  #endif
> Z> -			if (prison_ip_restrict(tpr, PR_INET6, NULL)) {
> Z> -				redo_ip6 =3D 1;
> Z> +			if (!prison_ip_restrict(tpr, PR_INET6, NULL)) {
> Z> +				redo_ip6 =3D true;
> Z>  				descend =3D 0;
> Z>  			}
> Z>  		}
>=20
> 	redo_ip6 =3D !prison_ip_restrict(tpr, PR_INET6, NULL);
>=20
> --=20
> Gleb Smirnoff


PS, the logic redo_ip4 / redo_ip6 under low memory pressure can be =
optimized and I'll do that later.

Best regards,
Zhenlei


--Apple-Mail=_281FF14D-CED0-49A3-816F-155DC72D3787
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D"">Hi =
Gleb,<br class=3D""><div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D"">On Jan 14, 2023, at 3:39 AM, Gleb Smirnoff =
&lt;<a href=3D"mailto:glebius@freebsd.org" =
class=3D"">glebius@freebsd.org</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><div class=3D""> =
&nbsp;Zhenlei,<br class=3D""><br class=3D"">a couple concise assignments =
missed:<br class=3D""><br class=3D"">Z&gt; @@ -1876,15 +1871,15 @@ =
kern_jail_set(struct thread *td, struct uio *optuio, int flags)<br =
class=3D"">Z&gt; &nbsp;<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>continue;<br class=3D"">Z&gt; =
&nbsp;<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>}<br class=3D"">Z&gt; &nbsp;#endif<br class=3D"">Z&gt; -<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>if =
(prison_ip_restrict(tpr, PR_INET, NULL)) {<br class=3D"">Z&gt; -<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>redo_ip4 =
=3D 1;<br class=3D"">Z&gt; +<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>if (!prison_ip_restrict(tpr, =
PR_INET, NULL)) {<br class=3D"">Z&gt; +<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>redo_ip4 =3D true;<br =
class=3D"">Z&gt; &nbsp;<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>descend =3D 0;<br class=3D"">Z&gt; =
&nbsp;<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>}<br class=3D"">Z&gt; &nbsp;<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>}<br class=3D"">Z&gt; &nbsp;<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>}<br =
class=3D""><br class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>redo_ip4 =3D =
!prison_ip_restrict(tpr, PR_INET, NULL);<br =
class=3D""></div></div></blockquote><div><br class=3D""></div><div>I =
think that is wrong, as `prison_ip_restrict` is called in loop =
round.</div><div>`redo_ip4` might flip to false on next =
round.</div><div><br class=3D""></div><div>So the previous logic is =
right.</div><div><br class=3D""></div><div><span style=3D"caret-color: =
rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Menlo-Regular;" =
class=3D"">&gt; +</span>&nbsp; &nbsp;&nbsp;<span style=3D"caret-color: =
rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Menlo-Regular;" =
class=3D"">redo_ip4 =3D !prison_ip_restrict(tpr, PR_INET, =
&amp;ip4);</span></div><div><span style=3D"caret-color: rgb(0, 0, 0); =
color: rgb(0, 0, 0); font-family: Menlo-Regular;" class=3D""><br =
class=3D""></span></div><div><font color=3D"#000000" =
face=3D"Menlo-Regular" class=3D""><span style=3D"caret-color: rgb(0, 0, =
0);" class=3D"">Should be `redo_ip4 |=3D&nbsp;</span></font><span =
style=3D"caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: =
Menlo-Regular;" class=3D"">!prison_ip_restrict(tpr, PR_INET, =
&amp;ip4);`</span></div><div><br class=3D""></div><div><span =
style=3D"caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: =
Menlo-Regular;" class=3D""><br class=3D""></span></div><br =
class=3D""><blockquote type=3D"cite" class=3D""><div class=3D""><div =
class=3D""><br class=3D"">Z&gt; @@ -1896,8 +1891,8 @@ =
kern_jail_set(struct thread *td, struct uio *optuio, int flags)<br =
class=3D"">Z&gt; &nbsp;<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>continue;<br class=3D"">Z&gt; =
&nbsp;<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>}<br class=3D"">Z&gt; &nbsp;#endif<br class=3D"">Z&gt; -<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>if =
(prison_ip_restrict(tpr, PR_INET6, NULL)) {<br class=3D"">Z&gt; -<span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span>redo_ip6 =
=3D 1;<br class=3D"">Z&gt; +<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>if (!prison_ip_restrict(tpr, =
PR_INET6, NULL)) {<br class=3D"">Z&gt; +<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>redo_ip6 =3D true;<br =
class=3D"">Z&gt; &nbsp;<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>descend =3D 0;<br class=3D"">Z&gt; =
&nbsp;<span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>}<br class=3D"">Z&gt; &nbsp;<span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>}<br class=3D""><br =
class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>redo_ip6 =3D !prison_ip_restrict(tpr, PR_INET6, NULL);<br =
class=3D""><br class=3D"">-- <br class=3D"">Gleb Smirnoff<br =
class=3D""></div></div></blockquote><br class=3D""></div><div><br =
class=3D""></div><div>PS, the logic redo_ip4 / redo_ip6 under low memory =
pressure can be optimized and I'll do that later.</div><br class=3D""><div=
 class=3D"">
<div>Best regards,</div><div>Zhenlei</div>

</div>
<br class=3D""></body></html>=

--Apple-Mail=_281FF14D-CED0-49A3-816F-155DC72D3787--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DFF01C89-0B7C-40E2-AA6D-9B794A759E03>