All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
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 17:24:25 +0200	[thread overview]
Message-ID: <4FFAF7A9.8070506@redhat.com> (raw)
In-Reply-To: <4FFAF261.5010804@codemonkey.ws>

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.

Kevin

  reply	other threads:[~2012-07-09 15:24 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 [this message]
2012-07-09 15:45       ` Anthony Liguori
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=4FFAF7A9.8070506@redhat.com \
    --to=kwolf@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=armbru@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.