Revision e304e8e5

b/block/vmdk.c
813 813

  
814 814
static int vmdk_L2update(VmdkExtent *extent, VmdkMetaData *m_data)
815 815
{
816
    uint32_t offset;
817
    QEMU_BUILD_BUG_ON(sizeof(offset) != sizeof(m_data->offset));
818
    offset = cpu_to_le32(m_data->offset);
816 819
    /* update L2 table */
817 820
    if (bdrv_pwrite_sync(
818 821
                extent->file,
819 822
                ((int64_t)m_data->l2_offset * 512)
820 823
                    + (m_data->l2_index * sizeof(m_data->offset)),
821
                &(m_data->offset),
822
                sizeof(m_data->offset)
823
            ) < 0) {
824
                &offset, sizeof(offset)) < 0) {
824 825
        return VMDK_ERROR;
825 826
    }
826 827
    /* update backup L2 table */
......
830 831
                    extent->file,
831 832
                    ((int64_t)m_data->l2_offset * 512)
832 833
                        + (m_data->l2_index * sizeof(m_data->offset)),
833
                    &(m_data->offset), sizeof(m_data->offset)
834
                ) < 0) {
834
                    &offset, sizeof(offset)) < 0) {
835 835
            return VMDK_ERROR;
836 836
        }
837 837
    }
......
848 848
{
849 849
    unsigned int l1_index, l2_offset, l2_index;
850 850
    int min_index, i, j;
851
    uint32_t min_count, *l2_table, tmp = 0;
851
    uint32_t min_count, *l2_table;
852 852
    bool zeroed = false;
853 853

  
854 854
    if (m_data) {
......
924 924
        }
925 925

  
926 926
        *cluster_offset >>= 9;
927
        tmp = cpu_to_le32(*cluster_offset);
928
        l2_table[l2_index] = tmp;
927
        l2_table[l2_index] = cpu_to_le32(*cluster_offset);
929 928

  
930 929
        /* First of all we write grain itself, to avoid race condition
931 930
         * that may to corrupt the image.
......
938 937
        }
939 938

  
940 939
        if (m_data) {
941
            m_data->offset = tmp;
940
            m_data->offset = *cluster_offset;
942 941
            m_data->l1_index = l1_index;
943 942
            m_data->l2_index = l2_index;
944 943
            m_data->l2_offset = l2_offset;

Also available in: Unified diff