From: Saul Wold <sgw@linux.intel.com>
To: Patches and discussions about the oe-core layer
<openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH] runqemu: Fix TAP='TUNSETGROUP: Invalid argument' by falling back to tunctl -u
Date: Thu, 03 May 2012 13:07:51 -0700 [thread overview]
Message-ID: <4FA2E597.2030500@linux.intel.com> (raw)
In-Reply-To: <1335968668-3019-1-git-send-email-jason.wessel@windriver.com>
On 05/02/2012 07:24 AM, Jason Wessel wrote:
> By default the runqemu script tries to set the group permissions on any
> tap device it creates. The TUNSETGROUP ioctl is not implemented on some
> popular host enterprise linux distributions.
>
> Internally the script will exit as follows:
>
> ++ /opt/qemux86/bitbake_build/tmp/sysroots/x86_64-linux/usr/bin/tunctl -b -g 100
> + TAP='TUNSETGROUP: Invalid argument'
> + STATUS=1
> + '[' 1 -ne 0 ']'
> + echo 'tunctl failed:'
> tunctl failed:
> + echo TUNSETGROUP: Invalid argument
>
> This patch implements a fallback to using the userid as the owner of
> the tap device which is supported by all 2.6 kernels, the default remains
> to try and use the groupid first.
>
> Signed-off-by: Jason Wessel<jason.wessel@windriver.com>
> ---
> scripts/runqemu-ifup | 20 +++++++++++++-------
> scripts/runqemu-internal | 5 +++--
> 2 files changed, 16 insertions(+), 9 deletions(-)
>
> diff --git a/scripts/runqemu-ifup b/scripts/runqemu-ifup
> index f80538f..e4c3daf 100755
> --- a/scripts/runqemu-ifup
> +++ b/scripts/runqemu-ifup
> @@ -34,7 +34,7 @@
> # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
>
> usage() {
> - echo "sudo $(basename $0)<gid> <native-sysroot-basedir>"
> + echo "sudo $(basename $0)<uid> <gid> <native-sysroot-basedir>"
> }
>
> if [ $EUID -ne 0 ]; then
> @@ -42,13 +42,14 @@ if [ $EUID -ne 0 ]; then
> exit 1
> fi
>
> -if [ $# -ne 2 ]; then
> +if [ $# -ne 3 ]; then
> usage
> exit 1
> fi
>
> -GROUP="-g $1"
> -NATIVE_SYSROOT_DIR=$2
> +USERID="-u $1"
> +GROUP="-g $2"
> +NATIVE_SYSROOT_DIR=$3
>
> TUNCTL=$NATIVE_SYSROOT_DIR/usr/bin/tunctl
> if [ ! -x "$TUNCTL" ]; then
> @@ -59,9 +60,14 @@ fi
> TAP=`$TUNCTL -b $GROUP 2>&1`
> STATUS=$?
> if [ $STATUS -ne 0 ]; then
> - echo "tunctl failed:"
> - echo $TAP
> - exit 1
> +# If tunctl -g fails, try using tunctl -u, for older host kernels
> +# which do not support the TUNSETGROUP ioctl
> + TAP=`$TUNCTL -b $USERID 2>&1`
> + STATUS=$?
> + if [ $STATUS -ne 0 ]; then
> + echo "tunctl failed:"
> + exit 1
> + fi
> fi
>
> IFCONFIG=`which ifconfig 2> /dev/null`
> diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal
> index 1831a09..fb0d806 100755
> --- a/scripts/runqemu-internal
> +++ b/scripts/runqemu-internal
> @@ -173,13 +173,14 @@ if [ "$TAP" = "" ]; then
> fi
>
> GROUPID=`id -g`
> + USERID=`id -u`
> echo "Setting up tap interface under sudo"
> # Redirect stderr since we could see a LD_PRELOAD warning here if pseudo is loaded
> # but inactive. This looks scary but is harmless
> - tap=`sudo $QEMUIFUP $GROUPID $OECORE_NATIVE_SYSROOT 2> /dev/null`
> + tap=`sudo $QEMUIFUP $USERID $GROUPID $OECORE_NATIVE_SYSROOT 2> /dev/null`
> if [ $? -ne 0 ]; then
> # Re-run standalone to see verbose errors
> - sudo $QEMUIFUP $GROUPID $OECORE_NATIVE_SYSROOT
> + sudo $QEMUIFUP $USERID $GROUPID $OECORE_NATIVE_SYSROOT
> return
> fi
> LOCKFILE="$LOCKDIR/$tap"
Merged into OE-Core
Thanks
Sau!
next prev parent reply other threads:[~2012-05-03 20:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-02 14:24 [PATCH] runqemu: Fix TAP='TUNSETGROUP: Invalid argument' by falling back to tunctl -u Jason Wessel
2012-05-03 20:07 ` Saul Wold [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-05-02 11:30 Jason Wessel
2012-05-02 15:54 ` Scott Garman
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=4FA2E597.2030500@linux.intel.com \
--to=sgw@linux.intel.com \
--cc=openembedded-core@lists.openembedded.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