qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Weil <weil@mail.berlios.de>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>,
	Bruce Rogers <brogers@novell.com>,
	Stefan Hajnoczi <stefanha@gmail.com>,
	qemu-devel@nongnu.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Subject: [Qemu-devel] Pad short frames to minimum size (60 bytes)
Date: Mon, 21 Feb 2011 22:13:48 +0100	[thread overview]
Message-ID: <4D62D58C.7060103@mail.berlios.de> (raw)
In-Reply-To: <AANLkTimwevNJuCXEnphegqumscy6DFUH7N+7pR0WedhD@mail.gmail.com>

Am 21.09.2010 11:16, schrieb Stefan Hajnoczi:
> On Mon, Sep 20, 2010 at 9:31 PM, Anthony Liguori 
> <anthony@codemonkey.ws> wrote:
>> On 09/20/2010 05:42 AM, Michael S. Tsirkin wrote:
>>> On Sun, Sep 19, 2010 at 07:36:51AM +0100, Stefan Hajnoczi wrote:
>>>> On Sat, Sep 18, 2010 at 10:27 PM, Edgar E. Iglesias
>>>> <edgar.iglesias@gmail.com>  wrote:
>>>>> This doesn't look right. AFAIK, MAC's dont pad on receive.
>>>> I agree.  NICs that do padding will do it on transmit, not receive.
>>>> Anything coming in on the wire should already have the minimum length.
>>> QEMU never gets access to the wire.
>>> Our APIs do not really pass complete ethernet packets:
>>> we forward packets without checksum and padding.
>>>
>>> I think it makes complete sense to keep this and
>>> handle padding in devices because we
>>> have devices that pass the frame to guest without padding and checksum.
>>> It should be easy to replace padding code in devices that
>>> need it with some kind of macro.
>> Would this not also address the problem?  It sounds like the root 
>> cause is
>> the tap code, not the devices..
> This won't work when s->has_vnet_hdr is 1 because the virtio-net
> header consumes buffer space and reduces the amount we pad. The
> padding size should be 60 + (s->has_vnet_hdr ? sizeof(struct
> virtio_net_hdr) : 0).
>
> Adjusting the length without clearing the untouched buffer space is
> probably fine. I'm trying to think of a scenario where this becomes
> an information leak (security issue). Perhaps if the guest has vlans
> enabled and allows different users to sniff traffic only on their
> vlans? Then you may be able to read part of another vlan's traffic by
> sending short packets to your vlan and gathering the padding data.
> This is pretty contrived but doing a <60 byte memset would prevent the
> issue for sure.
>
> Stefan


The latest patch which was sent was for eepro100.c (Bruce Rogers),
but any ethernet NIC has the same kind of problem.

Does the majority still think that patching the MAC
emulation is the right way (although real MACs don't
pad on receive, as Edgar already explained)?

Then all ethernet NIC emulations should
handle the padding in the same way.
The code should be marked as a workaround
which has nothing to do with the MAC emulation.
MAC emulation code for short frames should not be
removed.

If there is consensus on this, I'll send a modified
patch for eepro100.c (or Bruce modifies his patch
so it does add the workaround comment without
removing the short frame code).

The better way would be padding in qemu's network
code for those devices which need it (that means
adding a new flag "min_frame_length" for ethernet
devices).

Stefan W.

  reply	other threads:[~2011-02-21 21:14 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-18 20:43 [Qemu-devel] [PATCH] e1000: Pad short frames to minimum size (60 bytes) Stefan Hajnoczi
2010-09-18 20:57 ` Hervé Poussineau
2010-09-18 21:12   ` Stefan Hajnoczi
2010-09-20  8:42     ` Kevin Wolf
2010-09-20  8:51       ` Edgar E. Iglesias
2010-09-20  9:13       ` Stefan Hajnoczi
2010-09-18 21:27 ` Edgar E. Iglesias
2010-09-19  6:36   ` Stefan Hajnoczi
2010-09-19 11:18     ` Michael S. Tsirkin
2010-09-19 12:04       ` Edgar E. Iglesias
2010-09-19 12:03         ` Michael S. Tsirkin
2010-09-20  8:50     ` Kevin Wolf
2010-09-20  9:03       ` Edgar E. Iglesias
2010-09-20  9:34         ` Stefan Hajnoczi
2010-09-20 10:42     ` Michael S. Tsirkin
2010-09-20 20:31       ` Anthony Liguori
2010-09-20 20:35         ` Michael S. Tsirkin
2010-09-20 20:40         ` Edgar E. Iglesias
2010-09-20 20:44           ` Michael S. Tsirkin
2010-09-20 20:51         ` [Bug 638955] " Edgar E. Iglesias
2010-09-21  9:17           ` Michael S. Tsirkin
2010-09-21  9:21             ` Edgar E. Iglesias
2010-09-21  9:16         ` [Bug 638955] " Stefan Hajnoczi
2011-02-21 21:13           ` Stefan Weil [this message]
2010-09-20 17:52 ` [Qemu-devel] " Michael S. Tsirkin
  -- strict thread matches above, loose matches on Subject: below --
2010-09-15 13:29 [Qemu-devel] [Bug 638955] [NEW] emulated netcards don't work with recent sunos kernel daniel pecka
2010-09-17  8:47 ` [Qemu-devel] [Bug 638955] " daniel pecka
2010-09-17 15:52 ` daniel pecka
2010-09-20  8:02 ` daniel pecka
2010-09-20  9:47 ` Stefan Hajnoczi
2010-09-20 20:57 ` [Bug 638955] Re: [Qemu-devel] [PATCH] e1000: Pad short frames to minimum size (60 bytes) Anthony Liguori
2010-09-20 21:02 ` Edgar E. Iglesias
2010-09-21  8:49 ` [Qemu-devel] [Bug 638955] Re: emulated netcards don't work with recent sunos kernel daniel pecka
2010-10-02 19:23 ` daniel pecka
2010-10-12 14:40   ` [Qemu-devel] " Stefan Hajnoczi
2011-01-03 13:40 ` [Qemu-devel] " daniel pecka
2011-01-04  9:36   ` [Qemu-devel] " Stefan Hajnoczi
2011-01-04 10:04 ` [Qemu-devel] " daniel pecka
2011-01-04 17:51 ` Stefan Weil
2011-01-29 17:41 ` Daniel Kvasnicka
2011-02-28 19:06 ` geppz
2011-03-01  9:50   ` [Qemu-devel] " Stefan Hajnoczi
2011-03-01 15:14 ` [Qemu-devel] " geppz
2011-03-05 20:14 ` Stefan Hajnoczi
2011-03-06 12:32 ` Stefan Hajnoczi
2011-03-07 18:43 ` geppz
2014-10-05 20:57 ` dblade
2014-10-06  8:53   ` Stefan Hajnoczi
2014-10-07  1:46 ` dblade
2015-09-08 22:14 ` Jan Vlug
2015-09-10 19:44 ` Jan Vlug
2016-08-12  4:58 ` T. Huth

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=4D62D58C.7060103@mail.berlios.de \
    --to=weil@mail.berlios.de \
    --cc=brogers@novell.com \
    --cc=edgar.iglesias@gmail.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    --cc=stefanha@linux.vnet.ibm.com \
    /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).