lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <93b0ae3a-4929-d417-19b2-4c512032a24a@arm.com>
Date:   Wed, 1 Nov 2017 10:12:41 +0000
From:   Suzuki K Poulose <Suzuki.Poulose@....com>
To:     Julien Thierry <julien.thierry@....com>,
        linux-arm-kernel@...ts.infradead.org
Cc:     linux-kernel@...r.kernel.org, robert.walker@....com,
        mike.leach@...aro.org, coresight@...ts.linaro.org,
        mathieu.poirier@...aro.org
Subject: Re: [PATCH 06/17] coresight: tmc: Make ETR SG table circular

On 20/10/17 18:11, Julien Thierry wrote:

>> +static int __maybe_unused
>> +tmc_etr_sg_table_rotate(struct etr_sg_table *etr_table, u64 base_offset)
>> +{
>> +    u32 last_entry, first_entry;
>> +    u64 last_offset;
>> +    struct tmc_sg_table *sg_table = etr_table->sg_table;
>> +    sgte_t *table_ptr = sg_table->table_vaddr;
>> +    ssize_t buf_size = tmc_sg_table_buf_size(sg_table);
>> +
>> +    /* Offset should always be SG PAGE_SIZE aligned */
>> +    if (base_offset & (ETR_SG_PAGE_SIZE - 1)) {
>> +        pr_debug("unaligned base offset %llx\n", base_offset);
>> +        return -EINVAL;
>> +    }
>> +    /* Make sure the offset is within the range */
>> +    if (base_offset < 0 || base_offset > buf_size) {
> 
> base_offset is unsigned, so the left operand of the '||' is useless (would've expected the compiler to emit a warning for this).
> 
>> +        base_offset = (base_offset + buf_size) % buf_size;
>> +        pr_debug("Resetting offset to %llx\n", base_offset);
>> +    }
>> +    first_entry = tmc_etr_sg_offset_to_table_index(base_offset);
>> +    if (first_entry == etr_table->first_entry) {
>> +        pr_debug("Head is already at %llx, skipping\n", base_offset);
>> +        return 0;
>> +    }
>> +
>> +    /* Last entry should be the previous one to the new "base" */
>> +    last_offset = ((base_offset - ETR_SG_PAGE_SIZE) + buf_size) % buf_size;
>> +    last_entry = tmc_etr_sg_offset_to_table_index(last_offset);
>> +
>> +    /* Reset the current Last page to Normal and new Last page to NORMAL */
> 
> Current Last page to NORMAL and new Last page to LAST?

Thanks again, will fix them

Cheers
Suzuki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ