qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 23/25] fdc: Move floppy geometry guessing back from block.c
Date: Mon, 09 Jul 2012 10:45:34 -0500	[thread overview]
Message-ID: <4FFAFC9E.8070600@codemonkey.ws> (raw)
In-Reply-To: <4FFAF7A9.8070506@redhat.com>

On 07/09/2012 10:24 AM, Kevin Wolf wrote:
> Am 09.07.2012 17:01, schrieb Anthony Liguori:
>> On 07/09/2012 09:16 AM, Kevin Wolf wrote:
>>> From: Markus Armbruster<armbru@redhat.com>
>>>
>>> Commit 5bbdbb46 moved it to block.c because "other geometry guessing
>>> functions already reside in block.c".  Device-specific functionality
>>> should be kept in device code, not the block layer.  Move it back.
>>>
>>> Disk geometry guessing is still in block.c.  To be moved out in a
>>> later patch series.
>>>
>>> Bonus: the floppy type used in pc_cmos_init() now obviously matches
>>> the one in the FDrive.  Before, we relied on
>>> bdrv_get_floppy_geometry_hint() picking the same type both in
>>> fd_revalidate() and in pc_cmos_init().
>>>
>>> Signed-off-by: Markus Armbruster<armbru@redhat.com>
>>> Signed-off-by: Kevin Wolf<kwolf@redhat.com>
>
>>> diff --git a/hw/pc.c b/hw/pc.c
>>> index c7e9ab3..e5e7647 100644
>>> --- a/hw/pc.c
>>> +++ b/hw/pc.c
>>> @@ -335,10 +335,8 @@ void pc_cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size,
>>>                      ISADevice *floppy, BusState *idebus0, BusState *idebus1,
>>>                      ISADevice *s)
>>>    {
>>> -    int val, nb, nb_heads, max_track, last_sect, i;
>>> -    FDriveType fd_type[2] = { FDRIVE_DRV_NONE, FDRIVE_DRV_NONE };
>>> -    FDriveRate rate;
>>> -    BlockDriverState *fd[MAX_FD];
>>> +    int val, nb, i;
>>> +    FDriveType fd_type[2];
>>
>> This results in:
>>
>>     CC    i386-softmmu/hw/i386/../pc.o
>> /home/anthony/git/qemu/hw/i386/../pc.c: In function ‘pc_cmos_init’:
>> /home/anthony/git/qemu/hw/i386/../pc.c:339:16: error: ‘fd_type[1]’ may be used
>> uninitialized in this function [-Werror=uninitialized]
>> /home/anthony/git/qemu/hw/i386/../pc.c:339:16: error: ‘fd_type[0]’ may be used
>> uninitialized in this function [-Werror=uninitialized]
>> cc1: all warnings being treated as errors
>>
>> And GCC is right as:
>>
>>>        static pc_cmos_init_late_arg arg;
>>>
>>>        /* various important CMOS locations needed by PC/Bochs bios */
>>> @@ -381,13 +379,8 @@ void pc_cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size,
>>>
>>>        /* floppy type */
>>>        if (floppy) {
>>> -        fdc_get_bs(fd, floppy);
>>>            for (i = 0; i<   2; i++) {
>>> -            if (fd[i]) {
>>> -                bdrv_get_floppy_geometry_hint(fd[i],&nb_heads,&max_track,
>>> -&last_sect, FDRIVE_DRV_NONE,
>>> -&fd_type[i],&rate);
>>> -            }
>>> +            fd_type[i] = isa_fdc_get_drive_type(floppy, i);
>>>            }
>>>        }
>>>        val = (cmos_get_fd_drive_type(fd_type[0])<<   4) |
>>
>> This is an unconditional use of fd_type[0].  If floppy == NULL, this is
>> dereferencing an uninitialized value.
>>
>> I'm not sure why the explicit initialization was removed...
>
> Looks broken indeed. I just wonder why my gcc (or the buildbots) didn't
> complain.

:-)

> I dropped this patch from for-anthony, so you can give the pull request
> another try.

Okay, am building now and testing.  Looks good so far.

Regards,

Anthony Liguori

>
> Kevin

  reply	other threads:[~2012-07-09 15:45 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-09 14:16 [Qemu-devel] [PULL 00/25] Block patches Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 01/25] qcow2: fix #ifdef'd qcow2_check_refcounts() callers Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 02/25] qcow2: preserve free_byte_offset when qcow2_alloc_bytes() fails Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 03/25] blockdev: warn when copy_on_read=on and readonly=on Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 04/25] sheepdog: fix dprintf format strings Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 05/25] sheepdog: restart I/O when socket becomes ready in do_co_req() Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 06/25] sheepdog: use coroutine based socket functions in coroutine context Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 07/25] sheepdog: make sure we don't free aiocb before sending all requests Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 08/25] sheepdog: split outstanding list into inflight and pending Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 09/25] sheepdog: traverse pending_list from the first for each time Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 10/25] blkdebug: remove sync i/o events Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 11/25] blkdebug: tiny cleanup Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 12/25] blkdebug: pass getlength to underlying file Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 13/25] blkdebug: store list of active rules Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 14/25] blkdebug: optionally tie errors to a specific sector Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 15/25] raw: hook into blkdebug Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 16/25] block: copy over job and dirty bitmap fields in bdrv_append Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 17/25] block: introduce bdrv_swap, implement bdrv_append on top of it Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 18/25] fdc: rewrite seek and DSKCHG bit handling Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 19/25] fdc: fix interrupt handling Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 20/25] fdc_test: update media_change test Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 21/25] fdc_test: introduce test_sense_interrupt Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 22/25] fdc: Drop broken code for user-defined floppy geometry Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 23/25] fdc: Move floppy geometry guessing back from block.c Kevin Wolf
2012-07-09 15:01   ` Anthony Liguori
2012-07-09 15:24     ` Kevin Wolf
2012-07-09 15:45       ` Anthony Liguori [this message]
2012-07-09 16:07       ` Markus Armbruster
2012-07-09 16:46         ` Eric Blake
2012-07-09 17:01           ` Anthony Liguori
2012-07-10  7:41             ` Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 24/25] qtest: Tidy up temporary files properly Kevin Wolf
2012-07-09 14:16 ` [Qemu-devel] [PATCH 25/25] block: Factor bdrv_read_unthrottled() out of guess_disk_lchs() Kevin Wolf
2012-07-09 16:49 ` [Qemu-devel] [PULL 00/25] Block patches Anthony Liguori

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=4FFAFC9E.8070600@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=armbru@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.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).